我使用相同的祖先/父/实体组将实体组存储在 Google 应用程序引擎数据存储中。这样一来,实体就可以在一个原子数据存储事务中更新。
问题如下:
- 我启动一个数据库事务
- 我通过设置entityX.flag = True来更新entityX
- 我保存实体X
- 我查询 flag == True 的实体。但是,问题就在这里。此查询不返回任何结果。它应该返回entityX,但它没有。
当我删除事务时,我的代码可以完美运行,因此一定是事务导致了这种奇怪的行为。
对实体组中实体的更新是否应该在同一事务中的其他地方不可见?
PS:我正在使用Python。 GAE 告诉我不能使用嵌套事务:(
最佳答案
App Engine 的事务就是这样设计的,即事务中的读取会看到事务开始时的快照,因此它们看不到事务中早期写入的结果:
http://code.google.com/appengine/docs/python/datastore/transactions.html#Isolation_and_Consistency
关于python - 在谷歌应用程序引擎上,为什么更新没有反射(reflect)在事务中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3350068/