Встречается на собеседованиях • сегодня

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

Для создания связи Many-to-Many в SQLAlchemy 2.0 используется промежуточная таблица и relationship с параметром secondary. Вот пример:

python
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)

text

Ключевые моменты:
1. Создаем промежуточную таблицу с внешними ключами к обеим таблицам
2. В моделях указываем relationship с параметром `secondary`, ссылаясь на промежуточную таблицу
3. В SQLAlchemy 2.0 рекомендуется использовать аннотации типов (Mapped)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы