Принудительно использовать уникальную пару столбцов в SQLAlchemy

В SQLAlchemy, если вы хотите обеспечить уникальность пары столбцов, вы можете использовать класс UniqueConstraint. Вот несколько способов добиться этого:

Метод 1: использование класса UniqueConstraintс объявлением на уровне таблицы:

from sqlalchemy import create_engine, Column, Integer, String, UniqueConstraint
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class YourTable(Base):
    __tablename__ = 'your_table'
    id = Column(Integer, primary_key=True)
    column1 = Column(String)
    column2 = Column(String)
    __table_args__ = (UniqueConstraint('column1', 'column2'),)

Метод 2. Использование класса Indexс ограничением уникальности:

from sqlalchemy import create_engine, Column, Integer, String, Index
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class YourTable(Base):
    __tablename__ = 'your_table'
    id = Column(Integer, primary_key=True)
    column1 = Column(String)
    column2 = Column(String)
    __table_args__ = (Index('idx_unique_columns', 'column1', 'column2', unique=True),)

Метод 3. Использование класса UniqueConstraintс объявлением на уровне столбца:

from sqlalchemy import create_engine, Column, Integer, String, Table, MetaData
from sqlalchemy.schema import UniqueConstraint
metadata = MetaData()
your_table = Table(
    'your_table',
    metadata,
    Column('id', Integer, primary_key=True),
    Column('column1', String),
    Column('column2', String),
    UniqueConstraint('column1', 'column2', name='uq_columns')
)

Эти методы гарантируют, что комбинация значений в column1и column2будет уникальной в таблице.