Как сделать Many-to-Many связь в SQLAlchemy 2.0

Python Middle Без компании
Как сделать Many-to-Many связь в SQLAlchemy 2.0
Ответы
Для создания связи Many-to-Many в SQLAlchemy 2.0 используется промежуточная таблица и relationship с параметром `secondary`. Вот пример: ``` from sqlalchemy import Table, Column, Integer, ForeignKey from sqlalchemy.orm import relationship, Mapped, mapped_column from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() # Промежуточная таблица association_table = Table( 'association', Base.metadata, Column('left_id', ForeignKey('left.id'), primary_key=True), Column('right_id', ForeignKey('right.id'), primary_key=True) ) class Parent(Base): __tablename__ = 'left' id: Mapped[int] = mapped_column(primary_key=True) children: Mapped[list['Child']] = relationship(secondary=association_table) class Child(Base): __tablename__ = 'right' id: Mapped[int] = mapped_column(primary_key=True) ``` Ключевые моменты: - Создаем промежуточную таблицу с внешними ключами к обеим таблицам - В моделях указываем relationship с параметром `secondary`, ссылаясь на промежуточную таблицу - В SQLAlchemy 2.0 рекомендуется использовать аннотации типов (Mapped)