SQLAlchemy 如何获取字段的最大值?

Posted

技术标签:

【中文标题】SQLAlchemy 如何获取字段的最大值?【英文标题】:How can SQLAlchemy get the maximum value of a field? 【发布时间】:2017-04-28 06:12:43 【问题描述】:

我有以下 SQLAlchemy 类/模型:

class MyModel(db.Model):
    my_id = db.Column(db.Integer, nullable=False, primary_key=True)
    my_field = db.Column(db.String(128))

如何在表格中找到my_id 的最大值?

我见过this soluttion,但是,这似乎是一种丑陋的做法(我什至不知道如何在我的情况下应用它!)。当我想查询这张表时,我会这样做:

MyModel.query.filter(MyModel.my_field == "blah").one()

我不能做一些与此非常相似的事情来找到my_id 的最大值吗? 理想情况下,我会替换 filter(...)

里面的东西

【问题讨论】:

【参考方案1】:

您可以添加一个order_by 子句

MyModel.query.filter(MyModel.my_field == "blah") \
             .order_by(MyModel.my_id.desc()) \ 
             .first()

【讨论】:

有效。它和 Max 操作一样高效吗? 我猜它不是(但是差异应该很小),但我不确定。您可以尝试分析它或检查数据库日志在每种情况下发出了什么查询。 我的结果是:0.27269 s(查询所有后)和 3.09944e-06 s(使用 func.max 后)

以上是关于SQLAlchemy 如何获取字段的最大值?的主要内容,如果未能解决你的问题,请参考以下文章

thinkPHP 如何查询出数据库中id最大的一条数据

SQLAlchemy:如何过滤日期字段?

如何自动填充 SQLAlchemy 数据库字段? (Flask-SQLAlchemy)

如何在flask-sqlalchemy查询最后一条记录

SQLAlchemy:如何按两个字段分组并按日期过滤

SQLAlchemy:如何对关系字段的查询结果(order_by)进行排序?