SQLAlchemy在分组依据之前排序

时间:2014-03-18 02:20:22

标签: python sql sqlalchemy

我在查询order by之前group by进行了大量研究,并根据raw SQL找到了大多数答案。但是,我想在SQLAlchemy Code中看到一个解决方案。

  1. 我最初的天真解决方案如下:

    session.query(MyTable).order_by(timestamp).group_by(begin_date)
    
      

    不幸的是,这导致表首先被分组然后排序,这将不会返回我期望的内容。

  2. 其次,我试过了:

     stmt = session.query(MyTable).order_by(timestamp)
     session.query(stmt).group_by(begin_date)
    
      

    这会返回正确的结果,但是,结果是KeyedTuples,而我想实际拥有MyTable对象是出于向后兼容的原因。

  3. 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

原始问题的最新评论中的代码似乎仍有一些问题。这是一个工作版本:

stmt = session.query(MyTable).order_by(timestamp).subquery()
session.query().add_entity(MyTable, alias=stmt).group_by(begin_date);