【发布时间】:2021-07-06 22:23:17
【问题描述】:
我正在开发一个 Flask 应用程序,使用 Flask-Migrate(以及 Alembic)来管理对数据库的更改。我很早就遇到了一个问题,即更改一些 not-nullable 布尔列在底层数据库中引发了错误。
我正在删除一个布尔列,并重命名另一个(相当于两次删除和一次添加)。
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('user', sa.Column('is_enabled', sa.Boolean(), nullable=False))
op.drop_column('user', 'is_disabled')
op.drop_column('user', 'is_deleted')
# ### end Alembic commands ###
由于数据库中已经有数据,添加需要一个默认值来用于现有的行。但是,SQLAlchemy 的人有 already passed 在布尔列中添加(便携式)对 server_default 的支持。
鉴于这些条件,有没有办法进行这种迁移并保持数据库的可移植性,或者我是否需要将代码限制在一个数据库中,并开始根据布尔列的底层 DB 驱动程序编码 server_default 值?
【问题讨论】:
标签: python sqlalchemy alembic flask-migrate