Google App Engineでエンティティのidを自前で振る

Google App Engineのエンティティはput()でセーブしたタイミングでidが振られます。

from google.appengine.ext import db

#モデル定義
class SomeModel(db.Model): pass

sm = SomeModel()
sm.put() #ここでsm.key().id()が振られる

keyの名前をユニコード文字列で振ることもできるようです。

sm1 = SomeModel(key_name="something")
sm1.put() #ここでsm1.key().name()が振られる

とします。このときはidは振られません。

idを決めて登録するには先にkeyを作ってしまえばOKでした。

id = 10L
key2 = db.Key().from_path(SomeModel.kind(), id)

sm2 = SomeModel(key=key2)
sm2.put()

ただし、自前でidを振ってしまうと、ストアに入っているkeyと重複する恐れがあるので、
テストやデータリストア以外ではやらない方がいいと思います。