在使用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的示例代码根本不处理参数(在事务中硬编码)。
答案 0 :(得分:6)
假设您可以按照文档中的示例进行操作,答案是使用lambda(或命名的辅助函数)。 E.g。
yield context.transaction(lambda: increment_counter(acc.key(), 5))