Skip to main content
 首页 » 编程设计

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

2025年05月04日17bjzhanghao

在使用 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))