2013-02-03 41 views
1

我想從外鍵找到一個集合的最小/最大值。我知道你可以用func.minfunc.maxsession.query,但是有沒有辦法讓我使用標準的ORM關係?最小/最大與orm的關係

例如有博客,如果我想找到給定的帖子中最大的「數字評論」給出下面的架構,是否有可能做類似Post.query.get(0).number_comments.max()

class Post(base): 
    id = Column(Integer, primary_key=True) 
    number_comments = relationship("NumberComment") 

class NumberComment(base): 
    id = Column(Integer, primary_key=True) 
    num = Column(Integer, nullable=False) 

回答

1

如使用原始SQL的情況下,你需要加入這些表中查詢:

# This class lacks a foreign key in your example. 
class NumberComment(base): 
    # ... 
    post_id = Column(Integer, ForeignKey(Post.id), nullable=False) 
    # ... 

session.query(func.max(NumberComment.num)).join(Post).\ 
    filter(Post.id == 1).scalar() 

有沒有其他辦法可以做到這一點,至少不會像你想要的。有一個原因,爲什麼SQLAlchemy被稱爲像那樣,而不是ORMSorcery ;-)

我的建議是想想在SQL方面試圖想出一個查詢,這將幫助你很多。