2016-04-27 33 views
10

Ben sqlalchemy kullanarak otomatik yükseltme komut üretecinde Alembic tarafından alınacak çoklu sütun benzersiz bir kısıtlama kullanarak oluşturmaya çalışıyorum.Alembic + Sqlalchemy Çoklu Sütun Benzersiz Kısıtlaması

kullanıyorum kısıtlama oluşturmak vardır:

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

Ancak benim modelinde sqlalchemy import UniqueConstraint den

bu değil otomatik script nesil var içinde alembic tarafından alınır.

ben elle ekleyerek Alembic komut bu oluşturabilir.

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

bu otomatik alembic tarafından üretilecek olması için bir yol var mı?

Yardımlarınız için teşekkür ederiz.

cevap

9

Aynı sorunla karşılaşan ve bildirim modelini kullanarak tabloyu tanımlayan yapıyorsanız, __table_args__ için onu benzersiz kısıtlama ekleyebilir ve Alembic onu almak olacak bulunmuştur:

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