如何删除模型中的默认值并添加 alembic 版本?

Sab*_*esh 3 python orm sqlalchemy pyramid alembic

我有一个金字塔应用程序,它使用 sqlalchemy 和 alembic 进行数据库和迁移。我需要从我的模型类中删除默认说明符并向其中添加一个 alembic 版本脚本。

以前是这样的:

class TableOne(Base):
    __tablename__ = "table_one"
    id = Column(Integer, primary_key=True)
    field_one = Column(Boolean(name='field_one_bool'), default=False)
Run Code Online (Sandbox Code Playgroud)

我从 field_one 变量中删除了 'default=False' 并尝试运行:

alembic revision --autogenerate -m "remove default value for field_one"
Run Code Online (Sandbox Code Playgroud)

生成了 Alembic 版本脚本,但我在 upgrade() 和 downgrade() 方法中获得的所有内容是:

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 ###
Run Code Online (Sandbox Code Playgroud)

基本上,如果我从模型类中删除 'default=False' ,我需要知道我应该在 alembic 脚本中做什么。

小智 7

如果您像我一样想要删除server_default并最终到达此页面,则该功能是alter_column(table_name, column_name, server_default=None)


Ilj*_*ilä 6

defaultColumn是在Python完全处理,与此相反server_default。由于删除它对数据库没有影响,因此生成的迁移脚本为空。换句话说,在这种情况下您不需要迁移。