python - GAE 交易 : pass entity or key?

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

当使用 GAE 进行交易时,传递实体是可以的,或者你应该总是传递 key 给实体。例如,假设我正在将资金从一个实体转移到另一个实体。我应该这样做吗:

@ndb.transactional(xg=True)
def transfer_money(key1, key2, amount):
    entity1 = key1.get()
    entity2 = key2.get()
    entity1.money -= amount
    entity2.money += amount
    ndb.put_multi([entity1, entity2])

或者这样可以吗:

@ndb.transactional(xg=True)
def transfer_money(entity1, entity2, amount):
    entity1.money -= amount
    entity2.money += amount
    ndb.put_multi([entity1, entity2])

还是取决于其他因素?

最佳答案

AFAIK #2 不起作用(事务性),您需要加载(并放入)事务中的对象。

关于python - GAE 交易 : pass entity or key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31213881/

相关文章:

java - Quartz调度程序产生 "ResultSet is closed"异常

python - 如何在 python 中对 A-Z 之外的 UTF-8 进行加密?

python - 当且仅当稍后没有通过 try 和 except 捕获异常时才记录异常

python - 如何按两列 pandas 数据框分组和映射

java - Google App Engine 未部署新的 web.xml

ruby-on-rails - ActiveRecord 和 Postgres 行锁定

python - 如何在opencv python中将相机 View 转换为俯视笛卡尔平面?

java - 如何使用具有多对多关系的 GAE 数据存储事务?

python - 求启示——AppEngine中的全局变量(aeoid.get_current_user())

node.js - 在 forEach 问题中对交易进行 Sequelize