Google NDB仅更新特定属性?

时间:2014-07-08 21:00:05

标签: google-app-engine google-cloud-datastore

有没有办法只更新NDB实体上的特定属性?

考虑这个例子。

实体A具有以下属性: 财产B. 财产C

假设这两个属性目前的值都为1。

两个不同的请求正在尝试更新同一个实体并且它们同时发生。 因此,当Request#1和#2检索此实体时,B和C的值为1。

现在请求#1尝试更新属性B,因此它将值B设置为2并放入数据存储区。现在数据存储区中B = 2且C = 1。 但是,请求#2在内存中有B = 1和C = 1,当它将C改为2并放入DB时,它将B = 1和C = 2覆盖,这将覆盖Request#1写入的B值。

你如何解决这个问题?有没有办法只将特定属性写入数据存储区?

1 个答案:

答案 0 :(得分:1)

我相信你可能想查看交易。

根据文件:

  

如果交易"碰撞"与另一个,它失败了; NDB会自动重试几次失败的事务。因此,如果重试事务,则可以多次调用该函数。

链接:https://developers.google.com/appengine/docs/python/ndb/transactions