数据库
首页 > 数据库> > python-使用SQLAlchemy获取第一个和最后一个元素

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足以做到这一点…
(例如,有效触发查询时?)

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

解决方法:

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]

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

标签:postgresql,sqlalchemy,flask-sqlalchemy,python,database
来源: https://codeday.me/bug/20191029/1956856.html