为Datastore Plus(NDB)中的事务提供参数

时间:2011-04-05 22:45:40

标签: python google-app-engine transactions google-cloud-datastore

在使用Datastore Plus时,我无法确定如何将参数传递给事务。

有人可以重写这个常规数据存储区示例代码吗?

from google.appengine.ext import db

class Accumulator(db.Model):
    counter = db.IntegerProperty()

def increment_counter(key, amount):
    obj = db.get(key)
    obj.counter += amount
    obj.put()

q = db.GqlQuery("SELECT * FROM Accumulator")
acc = q.get()

db.run_in_transaction(increment_counter, acc.key(), 5)

我对数据存储区以及最后一行的等效内容特别感兴趣。

datastore plus documentation的示例代码根本不处理参数(在事务中硬编码)。

1 个答案:

答案 0 :(得分:6)

假设您可以按照文档中的示例进行操作,答案是使用lambda(或命名的辅助函数)。 E.g。

yield context.transaction(lambda: increment_counter(acc.key(), 5))