SQLAlchemy 在 Group By 前排序
我在研究如何在执行group by
之前进行order by
的查询时,发现大多数答案都是关于原始SQL
的。不过,我想看看用SQLAlchemy代码
来解决这个问题。
我最初的简单解决方案是这样的:
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
对象,以便保持向后兼容。
我该如何实现这个目标呢?
1 个回答
2
原问题最新评论中的代码似乎还有一些问题。这里有一个可以正常运行的版本:
stmt = session.query(MyTable).order_by(timestamp).subquery()
session.query().add_entity(MyTable, alias=stmt).group_by(begin_date);