1

我正在尝试从外键中找到集合的最小值/最大值。我知道你可以session.query使用func.minand func.max,但是有没有办法让我使用标准的 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)
4

1 回答 1

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,这将对您有很大帮助。

于 2013-02-03T20:05:25.023 回答