2016-04-27 8 views
10

Ich versuche zu erstellen, mit sqlalchemy eine Multispalte einzigartige Einschränkung, die von Alembic in seinem automatischen Upgrade-Skript-Generator abgeholt wird.Alembic + Sqlalchemy Multi Column Eindeutige Einschränkung

Ich schaffe haben die Einschränkung mit:

von sqlalchemy import UniqueConstraint in meinem Modell

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

Dies ist jedoch nicht von Alembic abgeholt darin automatische Skripterstellung ist.

Ich kann dies manuell erstellen im Skript Alembic durch in hinzufügen.

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

Gibt es eine Möglichkeit, dies haben automatisch von Alembic erzeugt werden?

Vielen Dank für Ihre Hilfe.

Antwort

9

ich das gleiche Problem wurde erlebt und festgestellt, dass, wenn Sie die Tabelle sind die Definition des Vereinbarungsmodell verwenden, können Sie es die eindeutige Einschränkung auf __table_args__ und Alembic es abholen hinzufügen:

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

Verwandte Themen