1

我知道如何通過密鑰獲取所有實體,使用Book.get_by_id(key) ,其中Bookndb.ModelPython,gae,ndb - 獲取所有密鑰

如何獲取我的種類中的所有密鑰? 它使用fetch()https://cloud.google.com/appengine/docs/python/ndb/queryclass#Query_fetch)?

  • 我不想從給定的實體或某個值獲取密鑰/ ID。只需檢索所有可用的鑰匙,所以我可以取回他們的尊重實體,這一切顯示給用戶
+0

從我的經驗,我不會推薦的「獲取所有」,除非你能控制的實體的數量爲一種 – marcadian

回答

3

隨着all_books = Book.query().fetch()all_books變量現在將有你的Book模型的每個實體。

但請注意,當您在Book模型中有很多實體時 - 加載&一次顯示它們並不是一個好主意。你將需要某種分頁實現(取決於你在做什麼) - 否則你的頁面將永久加載,這會給你的用戶帶來不好的體驗。

閱讀更多https://cloud.google.com/appengine/docs/python/ndb/queries

+0

的方法'Book.query()'實際上就夠了。謝謝你的答案 – PyGAE

+0

@PyGAE實際上,'Book.query()'是一個查詢。當你迭代它時,它恰好就像一個列表。 https://cloud.google.com/appengine/docs/python/ndb/queryclass –

2

如果你只是想的鑰匙,使用keys_only關鍵字在fetch()方法:

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

然後你就可以獲取使用ndb.get_multi(keys)的所有實體。 According to Guido,這可能比返回查詢中的實體(如果實體已經在緩存中)更高效。

1

如果你只是想獲得的所有鍵只需使用

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

,這將是一個實體組中返回所有鍵的列表。如果你想獲得的ID,而不是鑰匙,你也可以使用:

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