【问题标题】:min/max with orm relationships最小/最大与 orm 关系
【发布时间】:2013-02-03 18:18:51
【问题描述】:

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

【问题讨论】:

    标签: python sqlalchemy flask-sqlalchemy


    【解决方案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,这将对您有很大帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-27
      • 2022-10-24
      • 2013-05-14
      • 2017-03-05
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多