GAE mapreduce和缺少属性

时间:2011-06-12 18:39:56

标签: python google-app-engine mapreduce

我今天已经检查了用于Python版本的GAE的mapreduce库,我似乎无法绕过它。我正在尝试迭代具有缺少属性的数据存储区实体,并添加它们。其中一个属性具有默认值,但其他属性没有。没有默认值的属性是从另一个属性计算的(电子邮件地址的md5总和,也是用户名)。

以下是代码:

def user_schema(entity):
    entity.profile_id = hashlib.md5(string.strip(entity.username)).hexdigest()
    entity.verified = False
    operation.db.Put(entity)

当我运行它时,我得到了profile_id属性的BadValueError,因为它在所有实体中都缺失了。我假设即使在mapreduce运行user_schema之前也会发生这种情况。如何向实体添加缺失的属性?

1 个答案:

答案 0 :(得分:1)

如果您已添加新属性并根据需要进行设置,但未提供默认属性,则加载现有实体将导致您看到的异常,因为实体缺少必需属性。您需要首先添加不带required标志的属性,运行mapreduce来更新旧实体,然后将required标志设置为True。