2014-06-27 61 views
-1

我有大約1000個用戶帳戶的實體是這樣的:谷歌應用程序引擎:修改1000個實體

class UserAccount(ndb.Model): 
    email = ndb.StringProperty() 

一些電子郵件值包含大寫字母像[email protected]。我想選擇所有UserAccount實體的所有email值,並應用python的email.lower()。我怎樣纔能有效地做到這一點,最重要的是,沒有錯誤?

注意:電子郵件值對於登錄很重要,所以我不能搞砸了。如果出現我犯了錯誤的事件,是否有辦法備份這些數據?

謝謝。

回答

1

是的,當然。即使數據存儲管理是一項實驗性功能,我們也可以在不編碼的情況下備份和恢復數據。按照此說明進行備份流程:Backing up data。 要處理您的數據,最有效的方法是使用MapReduce library

0

如果你以前從未做過Mapreduce,它的工作原理是一個非常複雜的工作。
使用任務隊列,每個可以處理查詢結果頁面,存儲下一個pageToken併爲下一個頁面啓動另一個任務隊列。
如果您確實地運行任務隊列,則會比mapreduce慢。 1000個條目ia不多。也許在一分鐘內就會完成。

+0

你是對的 - Map Reduce對於初學者來說相當複雜。在這個非常特殊的例子中是否會要求你寫一個如何使用任務隊列的例子?我會很感激可能最小的代碼來完成這個工作;我從來沒有與任務隊列合作過。 – puoyaahhh

+0

請先嚐試編寫代碼,並在遇到問題時發佈單獨的S.O問題。 –

+0

查看此答案,例如:http://stackoverflow.com/questions/21638552/how-to-update-400-000-gae-datastore-entities-in-parallel/21640143#21640143 –