Sobes.tech
Назад к вопросам
Junior — Middle
68

Какова роль параметра relationship в ORM-библиотеке SQLAlchemy и зачем он используется?

Компании, где спрашивали
Норси-Транс

Ответ от нейросети

sobes.tech AI

Параметр relationship в SQLAlchemy используется для определения связи между двумя моделями (таблицами) в объектно-реляционном отображении (ORM). Он позволяет описать, как объекты одной модели связаны с объектами другой, например, один-к-одному, один-ко-многим или многие-ко-многим.

Зачем нужен relationship:

  • Позволяет удобно получать связанные объекты через атрибуты Python, без написания SQL-запросов.
  • Автоматически управляет загрузкой связанных данных (ленивая загрузка, жадная загрузка).
  • Обеспечивает каскадные операции (например, удаление связанных объектов).

Пример:

from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    posts = relationship('Post', back_populates='author')

class Post(Base):
    __tablename__ = 'posts'
    id = Column(Integer, primary_key=True)
    title = Column(String)
    author_id = Column(Integer, ForeignKey('users.id'))
    author = relationship('User', back_populates='posts')

Здесь posts у пользователя — список связанных постов, а author у поста — его автор.