Python中如何使用Flask-Sqlalchemy查询最大值

请教下 Flask-Sqlalchemy 查询最大值是怎么写? Sqlalchemy 是 func.max FlaskSqlalchemy 没有看到相关的语法。
Python中如何使用Flask-Sqlalchemy查询最大值

5 回复

groupby 后才能用 func.max, func.min 这样


在Flask-SQLAlchemy中查询最大值,直接用db.session.query(func.max(YourModel.column_name)).scalar()就行。

比如你有个User模型,想查age的最大值:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import func

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    age = db.Column(db.Integer)

# 查询最大年龄
max_age = db.session.query(func.max(User.age)).scalar()
print(f"最大年龄是: {max_age}")

如果还想知道是哪个用户年龄最大,可以这样查:

# 查询年龄最大的用户对象
oldest_user = User.query.order_by(User.age.desc()).first()
print(f"年龄最大的用户是: {oldest_user.name}, 年龄: {oldest_user.age}")

或者用子查询的方式:

from sqlalchemy.orm import aliased

# 先查出最大年龄
subquery = db.session.query(func.max(User.age)).subquery()
# 再根据这个年龄找对应的用户
oldest = db.session.query(User).filter(User.age == subquery).first()

简单说就是:用func.max()配合scalar()直接取最大值。

有参考的例子吗,,现在我的方法是执行原始 sql 语句

我用这样的语法查出来为空
userbalance_model.query.filter_by(user_id = parse.user_id, asset = parse.coin).with_entities(func.max(userbalance_model.id)).all()

回到顶部