繁体   English   中英

Alembic + Sqlalchemy 多列唯一约束

[英]Alembic + Sqlalchemy Multi Column Unique Constraint

我正在尝试使用 sqlalchemy 创建一个多列唯一约束,该约束将由 Alembic 在其自动升级脚本生成器中选取。

我已经使用以下方法创建了约束:

from import UniqueConstraint在我的模型中import UniqueConstraint

UniqueConstraint('col1', 'col2', 'number', name='uix_table_col1_col2_col3')

但是,Alembic 在它的自动脚本生成中没有发现这一点。

我可以通过添加在 Alembic 脚本中手动创建它。

op.create_unique_constraint('uq_table_col1_col2_col3', 'table', ['col1', 'col2', 'col3'])

有没有办法让 Alembic 自动生成它?

谢谢你的帮助。

我遇到了同样的问题,发现如果您使用声明性模型定义表,您可以将其添加到__table_args__的唯一约束,Alembic 会选择它:

class MyClass(Base):
    __tablename__ = 'table'
    __table_args__ = (
        UniqueConstraint('col1', 'col2', 'number', name='uix_table_col1_col2_col3'),
    )

http://docs.sqlalchemy.org/en/latest/orm/extensions/declarative/table_config.html

我可以确认:

....
        __table_args__ = (UniqueConstraint('col1', 'col2'),)
....

将以下内容添加到 alembic 升级文件中:

def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_unique_constraint(None, 'instruments', ['col1', 'col2'])
    # ### end Alembic commands ###

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM