pythonのModel.get_or_insert(key_name, **kwds)
メソッドのgoogleアプリケーションエンジンの仕組みを理解できません。Model.get_or_insert()とアプリエンジンの先祖取引との関係
トランザクション内のすべてのデータストア操作は、祖先クエリでなければなりません。しかし、私はModel.get_or_insert(key_name, **kwds)
のドキュメントがどのように祖先クエリであるかわかりません。 「親」が最後の行の引数で指定されていないので、以下、例えば、2行目のparent=kwds.get('parent')
の結果は、このように祖先クエリとしてクエリを否定、None
できないでしょう?:
def txn(key_name, **kwds):
entity = Story.get_by_key_name(key_name, parent=kwds.get('parent')) # parent is not defined?
if entity is None:
entity = Story(key_name=key_name, **kwds)
entity.put()
return entity
def get_or_insert(key_name, **kwargs):
return db.run_in_transaction(txn, key_name, **kwargs)
get_or_insert('some key', title="The Three Little Pigs") # no parent specified
私はここで毛を分割しようとしていません。自分のアプリケーションでトランザクションを正しく使用する方法を理解していないだけでなく、このドキュメントを参考にして理解を深めています。
ご協力いただきありがとうございます。
xg = transaction()関数にtrueを渡します。次に、1つに制限されるのではなく、トランザクションコールバックで最大5つのエンティティグループに触れることができます。 –