relationship.
class Parent(Base):
id = Column(Integer, primary_key=True)
child = relationship("Child", uselist=False, back_populates="parent")
class Child(Base):
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('parent.id'))
parent = relationship("Parent", back_populates="child")
Когда я вызываю запрос
Parent.query.all()
на выходе получаю список объектов Parent.
Правильно понимаю, что при последующей итерации по этому листу, и запросом связанного объекта parent.child в БД отправляются дополнительные запросы?
Т.е. чтобы понять child каждого parent нужно сделать n-нное количество запросов к базе?
Если таких объектов, скажем, десятки тысяч и количество «вложенных» объектов не 1, а 3, как правильнее составить запрос, чтобы с меньшей нагрузкой на бд вытащить все эти данные?
Да, называется это проблема 1+N запросов. Решается это установкой политики загрузки данных в релейшне.
Обсуждают сегодня