2016-04-27 15 views
10

私は、Alembicが自動アップグレードスクリプトジェネレータで選択するマルチカラムユニーク制約をsqlalchemyを使って作成しようとしています。Alembic + Sqlalchemyマルチカラムユニーク制約

私が使用して制約を作成している:

SQLAlchemyのimport UniqueConstraintからの私のモデルに

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

をしかし、これは、それ自動スクリプト生成年代にアレンビックによってピックアップされていません。

私は手動で追加することによって、アレンビックスクリプトでこれを作成することができます。

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

これは自動的にアレンビックによって生成されていする方法はありますか?

ありがとうございました。

答えて

9

私は同じ問題を経験して、宣言型モデルを使用してテーブルを定義している場合、あなたは__table_args__にそれを一意性制約を追加することができますし、アレンビックはそれを拾うということがわかった。

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

関連する問題