我发现这个特殊问题,运行查询,确认记录存在,返回零计数。
以下是我的模特:
class Description(ndb.Model):
description = ndb.TextProperty()
time_posted = ndb.DateTimeProperty(auto_now_add=True)
uuid = ndb.StringProperty()
class Examine(ndb.Model):
updated = ndb.DateTimeProperty(auto_now=True, auto_now_add=True)
descriptions = ndb.StructuredProperty(Description, repeated=True)
active = ndb.KeyProperty(kind=Description)
slug = ndb.StringProperty(indexed=True)
假设我正在运行以下内容,确认数据存储区中确实存在特定的UUID:
d_id = 'ef531b70-3486-11e3-9500-ef31d661e6b2'
cnt = Description.query(Description.uuid == d_id).count()
我将收到0作为cnt的结果。有人可以向我解释为什么会这样吗?
答案 0 :(得分:1)
数据存储区查询最终是一致的。这意味着如果基础数据发生更改,有时查询将无法反映此更改。
要解决此问题,您可以构建数据存储区并使查询保持一致:https://developers.google.com/appengine/docs/python/datastore/structuring_for_strong_consistency
如果描述实体保存在检查的父键中,则以下查询将非常一致:
cnt = Description.query(ancestor=ExamineKey).filter(Description.uuid == d_id).count()