Python, gae, ndb - 以一种方式获取所有键

Python, gae, ndb - get all keys in a kind

我知道如何使用 Book.get_by_id(key) 通过密钥获取所有实体 其中 Bookndb.Model.

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

有了 all_books = Book.query().fetch()all_books 变量现在将包含您的 Book 模型的每个实体。

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

https://cloud.google.com/appengine/docs/python/ndb/queries

阅读更多内容

如果您只需要键,请在 fetch() 方法中使用 keys_only 关键字:

Book.query().fetch(keys_only=True)

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

如果您只想获取所有密钥,只需使用

entity.query().fetch(key_only=True)

这将 return 该实体组中所有键的列表。如果您想获取 ID 而不是密钥,您还可以使用:

map(lambda key: key.id(), entity.query().fetch(key_only=True))