Python, gae, ndb - 以一种方式获取所有键
Python, gae, ndb - get all keys in a kind
我知道如何使用 Book.get_by_id(key)
通过密钥获取所有实体
其中 Book
是 ndb.Model
.
如何获得我的 Kind 中的所有密钥?
是否使用 fetch()
(https://cloud.google.com/appengine/docs/python/ndb/queryclass#Query_fetch) ?
- 我不想从给定的实体或某些值中获取 keys/IDs。只需检索所有可用的键,这样我就可以检索它们的实体并将其全部显示给用户
有了 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))
我知道如何使用 Book.get_by_id(key)
通过密钥获取所有实体
其中 Book
是 ndb.Model
.
如何获得我的 Kind 中的所有密钥?
是否使用 fetch()
(https://cloud.google.com/appengine/docs/python/ndb/queryclass#Query_fetch) ?
- 我不想从给定的实体或某些值中获取 keys/IDs。只需检索所有可用的键,这样我就可以检索它们的实体并将其全部显示给用户
有了 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))