AppEngine 文档有一些事务示例,使用 AppEngine 原生技术对原生对象进行事务查询。
根据http://www.allbuttonspressed.com/projects/django-nonrel [1]上的文档,我想使用 AppEngine 事务来查询 Django 对象。这可能吗?
def txn():
index = random.randint(0, NUM_SHARDS - 1)
shard_name = "shard" + str(index)
counter = SimpleCounterShard.objects.filter(name=shard_name)
# Make counter if it doesn't exist
if not len(counter):
counter = SimpleCounterShard(name=shard_name)
counter.count += 1
counter.put()
db.run_in_transaction(txn)
这目前因“事务中只允许祖先查询”而失败。我知道这是要求我做一些涉及祖先类的事情,但我不确定是什么或为什么。
有小费吗?
[1] “您不能使用 Django 的事务 API。如果您的特定数据库支持特殊类型的事务(例如,App Engine 上的 run_in_transaction()),您必须使用特定于平台的函数。”