【问题标题】:SQLAlchemy query a chain of One-to-Many relationshipsSQLAlchemy 查询一对多关系链
【发布时间】:2012-05-24 05:08:19
【问题描述】:

我正在寻找一种方法来查询 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)

在这种情况下不起作用。 Pages 的数量很大(因此在查询章节时使用 lazy="dynamic" 参数),我不想通过在 Page 表中添加 book_id 列来反规范化。

【问题讨论】:

    标签: database sqlalchemy


    【解决方案1】:
    qry = Page.query.join(Chapter).join(Book).filter(Book.id == 1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-18
      • 2011-09-26
      • 1970-01-01
      • 2018-02-24
      • 2011-02-18
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      相关资源
      最近更新 更多