GAE mapreduce и отсутствующие свойства - PullRequest
0 голосов
/ 12 июня 2011

Сегодня я проверил библиотеку mapreduce для версии GAE на Python, и я никак не могу обернуться вокруг нее. Я пытаюсь перебрать сущности хранилища данных с отсутствующими свойствами и добавить их. Одно из свойств имеет значение по умолчанию, а другое - нет. Свойство, которое не имеет значения по умолчанию, вычисляется из другого свойства (md5 сумма адреса электронной почты, которая удваивается как имя пользователя).

Вот код:

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

Когда я запускаю это, я получаю BadValueError для свойства profile_id, потому что оно отсутствует во всех сущностях. Я предполагаю, что это происходит еще до того, как mapreduce запустит user_schema. Как мне добавить недостающие свойства к сущностям?

1 Ответ

1 голос
/ 14 июня 2011

Если вы добавили новое свойство и задали его как обязательный, но не указали значение по умолчанию, загрузка существующих объектов вызовет исключение, которое вы видите, поскольку у объектов отсутствует обязательное свойство. Вам нужно начать с добавления свойства без флага required, запустить mapreduce для обновления старых объектов и только затем установить флаг required в значение True.

...