Почему значение по умолчанию не влияет на таблицу в sqlalchemy? - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь обновить свои таблицы и добавить новый столбец, в этом столбце должно быть целочисленное значение по умолчанию, я попытался использовать default, а также default_server, как рекомендуется здесь: Почему не работает значение столбца по умолчанию в sqlalchemy но значение этого поля остается нулевым, можно установить целочисленное значение по умолчанию?

col = Column(field_name, data_type, default=0)
column_name = column.compile(dialect=engine.dialect)
column_type = column.type.compile(engine.dialect)
engine.execute('ALTER TABLE %s ADD COLUMN %s %s' % (table_name, column_name, column_type))

1 Ответ

0 голосов
/ 03 января 2019

Проблема в том, что ваш ручной ALTER TABLE оператор не добавляет значение по умолчанию и оставляет столбец обнуляемым;server_default на объекте Column не имеет никакого эффекта.Если вы хотите использовать значение по умолчанию, добавьте его:

engine.execute('ALTER TABLE %s ADD COLUMN %s %s DEFAULT 0' % (table_name, column_name, column_type))

Я бы настоятельно рекомендовал использовать alembic для миграции баз данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...