在使用 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的示例代码根本不处理参数(在交易中硬编码)。
请您参考如下方法:
假设您可以按照文档中的示例进行操作,答案是使用 lambda(或命名辅助函数)。例如
yield context.transaction(lambda: increment_counter(acc.key(), 5))
