我正在寻找一种在SQLAlchemy中查询一对多关系链的方法。鉴于以下模型(Base是声明性基础):
class Book(Base):
id = Column(Integer, primary_key=True)
chapters = relationship("Chapter", backref="book")
class Chapter(Base):
id = Column(Integer, primary_key=True)
book_id = Column(Integer, ForeignKey(Book.id))
pages = relationship("Page", backref="chapter", lazy="dynamic")
class Page(Base):
id = Column(Integer, primary_key=True)
chapter_id = Column(Integer, ForeignKey(Chapter.id))
我需要通过与之关联的书籍查询页面实体(通过章节)。然而,
Page.query.filter(Page.chapter.book_id == 1)
在这种情况下不起作用。页面数量非常大(因此查询章节时为lazy="dynamic"
参数),我不希望通过向Page表格添加book_id
列来取消规范化。
答案 0 :(得分:1)
qry = Page.query.join(Chapter).join(Book).filter(Book.id == 1)