为什么默认值不会影响sqlalchemy中的表?

时间:2019-01-03 06:53:54

标签: python sqlalchemy

我正在尝试更新表并添加新列,对此列应该是默认的Integer值,我尝试使用default以及default_server,如此处建议的那样:Why isn't sqlalchemy's default column value working  但是此字段的值保持为空,是否可以设置Integer默认值?

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 :(得分:0)

问题是您的手动ALTER TABLE语句不添加默认值,并使该列可为空;在server_default对象上使用Column无效。如果要使用默认值,请添加它:

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

我强烈建议使用alembic进行数据库迁移。