Google App Engine обновляет схему в модели БД

#python #google-app-engine #schema

#python #google-app-engine #схема

Вопрос:

Я добавляю новый атрибут к существующей модели хранилища данных. Мне нужно обновить существующую схему с данными до новой схемы. Я проверил документ Google о обновлении схемы, и он использует модель ndb.

У меня есть такая модель БД:

 class oldModel(db.Model):
     name = db.StringProperty(default = "")
     author = db.StringProperty(default = "")
     created = db.DateTimeProperty(auto_now_add = True)
  

Моя новая схема:

 class oldModel(db.Model):
     name = db.StringProperty(default = "")
     author = db.StringProperty(default = "")
     created = db.DateTimeProperty(auto_now_add = True)
     # new field
     category = db.IntegerProperty(default = 0)  
  

Как вы это делаете? (Одна вещь, о которой я думаю, это включить новую схему с другим именем и вручную заполнить данные из старой в новую схему и удалить старую)

Ответ №1:

Добавить свойство действительно легко. Просто добавьте это в свою модель. Для любых объектов, которые существовали ранее, они будут иметь значение по умолчанию. Если вашим ранее существующим объектам необходимо другое значение для нового свойства, то вам придется выполнить итерацию по ним и присвоить новому свойству желаемое значение.

Комментарии:

1. Я просто добавляю новое свойство к сущности. Будут ли мои старые данные схемы заполнены значениями по умолчанию, когда я добавлю эту модель? Или старая модель просто существует без этого свойства?