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

发布于 2024-10-30 06:10:49 字数 635 浏览 1 评论 0原文

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

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

数据存储区和文档 的示例代码根本不处理参数(在事务内硬编码)。

I'm having trouble working out how to pass in arguments into transactions when using Datastore Plus.

Could someone please rewrite this regular-datastore example code?

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)

I'm particularly interested in the datastore plus equivalent of that last line.

The datastore plus documentation's example code doesn't deal with arguments at all (hardcoded inside the transaction).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮世清欢 2024-11-06 06:10:49

假设您可以遵循文档中的示例,答案是使用 lambda(或命名辅助函数)。例如

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

Assuming you can follow the example from the docs, the answer is to use a lambda (or a named helper function). E.g.

yield context.transaction(lambda: increment_counter(acc.key(), 5))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文