我正在尝试更新表并添加新列,对此列应该是默认的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))
答案 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进行数据库迁移。