2013-11-15 84 views
4

我在Google App Engine上使用NDB和Python。更新具有相同值的多個實體的屬性的正確方法是什麼? NDB相當於:Google App Engine - NDB - 在多個記錄上設置屬性值

UPDATE notifications SET read = true WHERE user_id = 123

用例是我有這些扇出通知。並且特定用戶想要將他們的所有通知設置爲已讀(可能爲100秒)。我知道我可以使用get_async和put_async來獲取每個未讀通知並將其設置爲已讀,但是我擔心通過獲取潛在的數百個序列化/反序列化來創建延遲。

任何建議是非常appericated。

回答

2

您可以使用Query的map()方法爲每個實體調用一個函數。爲了獲得最佳性能,請不要忘記_async

但GAE最有用的服務之一就是任務隊列,特別是在這種情況下。如果您合併Query Cursorsdeferred library,則可以輕鬆處理任意數量的實體。

+0

任務隊列是一個很好的建議,我期待我可能需要,如果我真的沒有需要以更新自己的財產來獲取所有實體使用它們。 雖然我想知道地圖。我沒有真正轉化(或映射)任何數據,IE我不關心結果。我只需要把數據。仍然認爲製圖符合法案? –

+0

'圖()'將導致少量工作得很好,否則你要使用的延遲庫的例子。不要忘記批量拼裝。 (在每個實體上調用'ndb.put_multi()'和'model.put()') – Josh

相關問題