微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-使用SQLAlchemy获取第一个和最后一个元素

在我的Python(Flask)代码中,我需要从sqlAlchemy查询获取按给定变量排序的第一个元素和最后一个元素.

我首先编写了以下代码

first_valuation = Valuation.query.filter_by(..).order_by(sqlalchemy.desc(Valuation.date)).first()
# Do some things
last_valuation = Valuation.query.filter_by(..).order_by(sqlalchemy.asc(Valuation.date)).first()
# Do other things

由于这些查询对于Postgresql数据库可能很繁重,并且在我复制代码时,我认为仅使用一个请求会更好,但是我不知道sqlAlchemy足以做到这一点…
(例如,有效触发查询时?)

解决此问题的最佳方法是什么?

@H_502_16@解决方法:

1)How to get First and Last record from a sql query?这是关于如何在一个查询获取第一条和最后一条记录的信息.

2)Here是有关sqlalchemy查询的文档.特别注意union_all(以实现上述答案).
它还具有有关何时触发查询的信息(基本上,查询是在您使用方法时触发的,这些方法返回结果,例如first()或all().这意味着Valuation.query.filter_by(..).order_by(sqlalchemy). desc(Valuation.date))不会向数据库发出查询.

另外,如果内存不是问题,我会说从第一个查询获取all()对象,然后通过python获取一个和最后一个结果:

results = Valuation.query.filter_by(..).order_by(sqlalchemy.desc(Valuation.date)).all()
first_valuation = results[0]
last_valuation = results[-1]

它比执行两个(甚至是统一的)查询要快,但如果数据库足够大,则可能会占用大量内存.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐