Nya*_*baa 2 google-app-engine google-cloud-datastore
我想使用get_or_insert,但我怎么知道它刚刚从现有条目创建或获取.
简而言之,你做不到.get_or_insert这只是一个便利功能,你可以很容易地为自己编写和改进.这是一个返回元组的简单替换,指示它是否已创建:
@classmethod
def my_get_or_insert(cls, key_name, parent=None, **kwargs):
def _tx():
entity = cls.get_by_key_name(key_name, parent=parent)
if entity:
return entity, False
entity = cls(key_name=key_name, parent=parent, **kwargs)
entity.put()
return entity, True
return db.run_in_transaction(_tx)
Run Code Online (Sandbox Code Playgroud)
以下是你如何使用它:
entity, created = MyKind.my_get_or_insert('foo', bar=123)
if created:
# Do whatever you do with a new entity here.
Run Code Online (Sandbox Code Playgroud)
记住只是承受,如果你用的配方使用它上面,任何你基于实体是否是新的或不不是事务 - 创建实体之后,但在这之前你的代码可能会失败.如果你想做什么有副作用,你应该在交易中做.
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |