Python 如何在alembic中使用alter_列?
我正在用alembic编写一个迁移,但对我来说,将服务器默认值从某物更改为零似乎是不可能的 我的代码:Python 如何在alembic中使用alter_列?,python,sqlalchemy,alembic,Python,Sqlalchemy,Alembic,我正在用alembic编写一个迁移,但对我来说,将服务器默认值从某物更改为零似乎是不可能的 我的代码: op.alter_column("foo", sa.Column("bar", sa.DateTime(timezone=False), server_default=None, nullable=True)) 如果我在迁移后检查,默认值仍然是NOW()这不是op.alter\u column()的工作方式。向其传递有关更改内容的参数,而不是新的sa.Column实例 op.alter_co
op.alter_column("foo", sa.Column("bar", sa.DateTime(timezone=False), server_default=None, nullable=True))
如果我在迁移后检查,默认值仍然是NOW()这不是
op.alter\u column()
的工作方式。向其传递有关更改内容的参数,而不是新的sa.Column
实例
op.alter_column('my_table', 'my_column', server_default=None)
要将列重命名为Alembic 0.9.5,我必须将迁移更改为以下内容:
op.alter_column('my_table', 'old_col_name', nullable=False, new_column_name='new_col_name')
注意:您还必须指定
existing_type
才能运行alter_column
命令似乎只有在某些情况下,existing_type
参数才是必需的,例如对于某些MySQL操作。还有更多。如果你想支持sqlite,你需要在批处理中使用op.batch\u alter\u table('my\u table',schema=None)作为批处理:batch\u op.alter\u column('old\u coll\u name',new\u column\u name='new\u coll\u name')