我知道如何使用Book.get_by_id(key)
通过密钥获取所有实体
其中Book
是ndb.Model
。
如何获得同类中的所有密钥?
是否使用fetch()
(https://cloud.google.com/appengine/docs/python/ndb/queryclass#Query_fetch)?
答案 0 :(得分:5)
如果您只想要密钥,请使用keys_only
方法中的fetch()
关键字:
Book.query().fetch(keys_only=True)
然后,您可以使用ndb.get_multi(keys)
获取所有实体。 According to Guido,这可能比返回查询中的实体更有效(如果实体已经在缓存中)。
答案 1 :(得分:4)
使用all_books = Book.query().fetch()
,all_books
变量现在将包含Book
模型的每个实体。
请注意,当Book
模型中有大量实体时 - 加载并同时显示所有实体并不是一个好主意。您将需要某种分页实现(取决于您正在做什么) - 否则您的页面将永远加载,这将为您的用户带来糟糕的体验。
答案 2 :(得分:1)
如果您只希望获得所有密钥,请使用
entity.query().fetch(key_only=True)
将返回该实体组中所有键的列表。如果你想获得身份证而不是钥匙,你也可以使用:
map(lambda key: key.id(), entity.query().fetch(key_only=True))