我今天已经检查了用于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之前也会发生这种情况。如何向实体添加缺失的属性?
答案 0 :(得分:1)
如果您已添加新属性并根据需要进行设置,但未提供默认属性,则加载现有实体将导致您看到的异常,因为实体缺少必需属性。您需要首先添加不带required
标志的属性,运行mapreduce来更新旧实体,然后将required
标志设置为True。