2014-06-27 59 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 –