在维护SQLAlchemy数据模型并利用Alembic进行版本控制时,我进行的以下代码更改导致空版本:
some_column = Column(Boolean, nullable=False, default=False)
以前是:
some_column = Column(Boolean, nullable=False)
因此,添加默认值不会产生任何改变,即生成一个空的修订版。我尝试了SQLAlchemy提供的其他值,例如false()
和expression.false()
而不是False
,但是结果是相同的(空的Alembic修订版)。还尝试了server_default
而不是default
。有问题的数据库是PostgreSQL。
通过空修订,我当然是说Alembic无法识别SQLAlchemy中进行的任何更改:
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###
感谢这方面的帮助。
似乎您必须打开一个设置来检查服务器默认设置,可能更安全地自己放入alter_column
并绝对使用server_default
,因为default
仅用于python端的设置默认(可以,但是听起来不是您想要的)。
自动生成可以选择检测:
...
更改服务器默认值。如果您设置了 将EnvironmentContext.configure.compare_server_default参数设置为True, 或自定义可调用函数。此功能适用于简单 案例,但不能总是产生准确的结果。
...