【发布时间】:2012-03-07 15:29:41
【问题描述】:
我不明白用于 python 的 Model.get_or_insert(key_name, **kwds) 方法的谷歌应用引擎是如何工作的。
据我了解,事务中的所有数据存储操作都必须是祖先查询。但是,我看不到 Model.get_or_insert(key_name, **kwds) 的文档如何是祖先查询。对于下面的例子,由于最后一行的参数中没有指定'parent',那么第二行中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
我并不想在这里分心,我只是在理解如何在我自己的应用程序中正确使用事务时遇到了困难,我正在寻找这个文档来加深我的理解。
非常感谢您的帮助!
【问题讨论】:
标签: python google-app-engine transactions bigtable