如何迁移具有新日期时间列且不可为空的表中数据的表?

时间:2019-06-22 04:42:18

标签: alembic flask-migrate

我已添加一列

registered_on = db.Column(db.DateTime, nullable=False)

到我的users表中。自动创建的迁移是

def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    ...
    op.add_column('users', sa.Column('registered_on', sa.DateTime(), nullable=False))
    ...

当我执行它时,我发现一个关于无效值0000-00-00 00:00:00的异常(等等)。

我应该如何调整迁移脚本以解决此问题?

(在这种情况下,最好填写一个虚拟值)

1 个答案:

答案 0 :(得分:0)

我可以想到两种方法:

  1. server_default操作添加add_column
op.add_column('users', sa.Column('registered_on', sa.DateTime(), nullable=False, server_default=func.now()))
  1. 首先将列插入为可空值,然后编辑所有行以获取值。给所有行赋予非空值后,再进行一次迁移以将列更改为非空。