带有 alembic 的 sql server 默认值的约束名称

问题描述 投票:0回答:1

我的 alembic 迁移在表中添加了一列,如下所示:

op.add_column("OrderTable", sa.Column("item_counter", sa.Integer(), nullable=False, server_default="0"))

当我运行迁移时,SQL Server 会生成一个

DF_Order_item_cou__39209daf
约束,因为我必须使用 server_default 将不可空列中的 item_counter 默认设置为 0。

问题是运行 alembic 降级 -1 失败,因为约束是由 SQL Server 生成的,而且我似乎无法控制为默认值创建的约束名称。我想我可以添加到基本模型中我的元数据中的naming_conventions dict,如下所示:

class Base(DeclarativeBase):
  metadata = MetaData(naming_convention: {
   "df": "df_%(table_name)s_%(column_0_name)s", ...
}

但是这些 DF 约束似乎是 SQL Server 特有的,并且不确定在使用 alembic 和 SQLAlchemy 时如何控制它们的名称,如Alembic:命名约束的重要性

中所述
sql-server sqlalchemy constraints alembic
1个回答
0
投票

事实证明,Alembic 在 drop_column 中有一些特殊的开关用于处理 SqlServer。阅读有关他们的信息这里 我需要的是:

op.drop_column("OrderTable", "item_counter", mssql_drop_default=True)
© www.soinside.com 2019 - 2024. All rights reserved.