Python,gae,ndb - 获取所有密钥

PyG*_*GAE 2 python google-app-engine app-engine-ndb google-cloud-datastore

我知道如何使用一键搞定所有实体Book.get_by_id(key) ,其中Book是一个ndb.Model.

如何获得同类中的所有密钥?它是否正在使用fetch()(https://cloud.google.com/appengine/docs/python/ndb/queryclass#Query_fetch)?

  • 我不想从给定实体或某个值获取密钥/ ID.只需检索所有可用的密钥,这样我就可以检索他们尊重的实体并将其全部显示给用户

Bre*_*rne 6

如果您只想要密钥,请keys_onlyfetch()方法中使用关键字:

Book.query().fetch(keys_only=True)
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用获取所有实体ndb.get_multi(keys). 根据Guido的说法,这可能比返回查询中的实体更有效(如果实体已经在缓存中).


Mih*_*ssu 5

随着all_books = Book.query().fetch()all_books变量现在将有你的每一个实体Book模型。

但请注意,当Book模型中有很多实体时- 一次加载并显示它们并不是一个好主意。您将需要某种分页实现(取决于您正在做什么) - 否则您的页面将永远加载,这会给您的用户带来糟糕的体验。

https://cloud.google.com/appengine/docs/python/ndb/queries阅读更多信息