2012-05-23 159 views
0

我正在尋找一種方法來查詢SQLAlchemy中的一對多關係鏈。鑑於以下車型(基本是一種聲明的基礎):SQLAlchemy查詢一對多關係鏈

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"),並且我不想通過將book_id列添加到Page表中來解除規範化。

回答

1
qry = Page.query.join(Chapter).join(Book).filter(Book.id == 1)