我在查询order by
之前group by
进行了大量研究,并根据raw SQL
找到了大多数答案。但是,我想在SQLAlchemy Code
中看到一个解决方案。
我最初的天真解决方案如下:
session.query(MyTable).order_by(timestamp).group_by(begin_date)
不幸的是,这导致表首先被分组然后排序,这将不会返回我期望的内容。
其次,我试过了:
stmt = session.query(MyTable).order_by(timestamp)
session.query(stmt).group_by(begin_date)
这会返回正确的结果,但是,结果是
KeyedTuples
,而我想实际拥有MyTable对象是出于向后兼容的原因。
我怎样才能做到这一点?
答案 0 :(得分:0)
原始问题的最新评论中的代码似乎仍有一些问题。这是一个工作版本:
stmt = session.query(MyTable).order_by(timestamp).subquery()
session.query().add_entity(MyTable, alias=stmt).group_by(begin_date);