Alembic + Sqlalchemy Multi Column Уникальное ограничение
Я пытаюсь создать с использованием sqlalchemy уникальное ограничение нескольких столбцов, которое будет подхвачено Alembic в его генераторе автоматического обновления script.
Я создаю ограничение, используя:
из sqlalchemy import UniqueConstraint
в моей модели
UniqueConstraint('col1', 'col2', 'number', name='uix_table_col1_col2_col3')
Однако, это не подхвачено Alembic в его автоматическом поколении script.
Я могу вручную создать это в Alembic script, добавив.
op.create_unique_constraint('uq_table_col1_col2_col3', 'table', ['col1', 'col2', 'col3'])
Есть ли способ автоматически генерировать это с помощью Alembic?
Благодарим вас за помощь.
Ответы
Ответ 1
Я столкнулся с той же проблемой и обнаружил, что если вы определяете таблицу с помощью декларативной модели, вы можете добавить к ней уникальное ограничение на __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