【问题标题】:How can SQLAlchemy get the maximum value of a field?SQLAlchemy 如何获取字段的最大值?
【发布时间】: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(...)

里面的东西

【问题讨论】:

    标签: python orm sqlalchemy flask-sqlalchemy


    【解决方案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 后)
    猜你喜欢
    • 2016-06-29
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    相关资源
    最近更新 更多