我在绕过NDB时遇到了一些麻烦。出于某种原因,它只是没有点击。我最挣扎的是整个关键/善良/祖先结构。
我只是想存储一组简单的Json数据。当我存储数据时,我想事先检查是否存在重复实体(基于密钥,而不是数据),因此我不会存储重复的实体。
class EarthquakeDB(ndb.Model):
data = ndb.JsonProperty()
datetime = ndb.DateTimeProperty(auto_now_add=True)
然后,存储数据:
quake_entry = EarthquakeDB(parent=ndb.Key('Earthquakes', quake['id']), data=quake).put()
所以我的问题是:
在插入更多数据之前,如何查看该特定密钥是否存在?
我如何根据密钥将数据拉出来阅读?
答案 0 :(得分:2)
因为您没有提供完整的NDB密钥(只有父密钥),所以您将始终插入唯一密钥。 但是您为父母使用自己的实体ID?为什么呢?
我认为你的意思是:
quake_entry = EarthquakeDB(id=quake['id'], data=quake)
quake_entry.put()
要获得它,您可以使用:
quate_entry = ndb.Key('Earthquakes', quake['id']).get()
在这里,您可以找到两个关于数据存储,强一致性和实体组的优秀视频。 Datastore Introduction和Datastore Query, Index and Transaction.
答案 1 :(得分:2)
经过一些试验和错误,并在voscausa的帮助下,我想出了解决问题的方法。正在通过for循环读入数据。
for quake in data:
quake_entity = EarthquakeDB.get_by_id(quake['id'])
if quake_entity:
continue
else:
quate_entity = EarthquakeDB(id=quake['id'], data=quake).put()