python - 在谷歌应用程序引擎上,为什么更新没有反射(reflect)在事务中?

标签 python google-app-engine

我使用相同的祖先/父/实体组将实体组存储在 Google 应用程序引擎数据存储中。这样一来,实体就可以在一个原子数据存储事务中更新。

问题如下:

  1. 我启动一个数据库事务
  2. 我通过设置entityX.flag = True来更新entityX
  3. 我保存实体X
  4. 我查询 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/

相关文章:

python - matplotlib 中的 axes.flat 是做什么的?

java - App Engine 和 Commons FileUpload

java - 在谷歌应用引擎(java)上解析 JSON

python - 从 GitLab CI 将应用程序部署到 App Engine 时权限被拒绝

python - Python中的元类是什么?

python - 如何使用 os.environ 在 python 中设置时区

java - 在 GAE 上检索/记录多个实体的最便宜的方法

android - Google Apps 引擎后端 - 缺少 Javax.persistence - Android Studio

python - 如何在巨大的数据集中查找和转换 pandas 数据框中的缺失值?

Python指数/线性曲线拟合