我知道如何通過密鑰獲取所有實體,使用Book.get_by_id(key)
,其中Book
是ndb.Model
。Python,gae,ndb - 獲取所有密鑰
如何獲取我的種類中的所有密鑰? 它使用fetch()
(https://cloud.google.com/appengine/docs/python/ndb/queryclass#Query_fetch)?
- 我不想從給定的實體或某個值獲取密鑰/ ID。只需檢索所有可用的鑰匙,所以我可以取回他們的尊重實體,這一切顯示給用戶
我知道如何通過密鑰獲取所有實體,使用Book.get_by_id(key)
,其中Book
是ndb.Model
。Python,gae,ndb - 獲取所有密鑰
如何獲取我的種類中的所有密鑰? 它使用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
的方法'Book.query()'實際上就夠了。謝謝你的答案 – PyGAE
@PyGAE實際上,'Book.query()'是一個查詢。當你迭代它時,它恰好就像一個列表。 https://cloud.google.com/appengine/docs/python/ndb/queryclass –
如果你只是想的鑰匙,使用keys_only
關鍵字在fetch()
方法:
Book.query().fetch(keys_only=True)
然後你就可以獲取使用ndb.get_multi(keys)
的所有實體。 According to Guido,這可能比返回查詢中的實體(如果實體已經在緩存中)更高效。
如果你只是想獲得的所有鍵只需使用
entity.query().fetch(key_only=True)
,這將是一個實體組中返回所有鍵的列表。如果你想獲得的ID,而不是鑰匙,你也可以使用:
map(lambda key: key.id(), entity.query().fetch(key_only=True))
從我的經驗,我不會推薦的「獲取所有」,除非你能控制的實體的數量爲一種 – marcadian