key_nameメモ
- Foo(key_name=...)でキーの名前を指定できる
- foo.key_nameになってるかと思いきやfoo.key().name()だった
- Foo.get_by_key_name(...)でその「キーの名前」でアクセスできる
- key_nameがコンフリクトしたら例外とか飛ぶのかなーと思ったけど飛ばなかった。
- 試しにDateTimeProperty(auto_add_now=True)をつけて何度か同じkey_nameでアクセスしてみたら、その日時の情報は追加のたびに変わって行ったがDataStore Viewerに現れた「日時情報のついているエントリー」は1個だけだった。つまりkay_nameがかぶった場合は警告無しに上書きされる、ということだな。
なお上記の調査は全部ローカルの開発サーバで行ったので本番環境では違うかもしれない
こんな感じで使おうと思っている:
def generate_key(prefix="", salt=DEFAULT_SALT): from datetime import datetime import hashlib time = str(datetime.now()) + salt return prefix + hashlib.md5(time).hexdigest()
ちなみに数字で始まるkey_nameは禁止されているので「game_」とかプレフィックスつけて使おうと思っている。わかりやすいし。