В 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будет уникальной в таблице.