· 约 2 分钟

23-FastAPI进阶-ORM操作数据-聚合查询

  • FastAPI
  • Python

学习目标

核心概念

代码示例

from sqlalchemy import func, select


@app.get("/users/stats")
def user_stats(db: DbSession):
    total = db.scalar(select(func.count()).select_from(User)) or 0
    avg_age = db.scalar(select(func.avg(User.age))) or 0

    department_stmt = (
        select(User.department, func.count(User.id))
        .group_by(User.department)
        .order_by(User.department)
    )
    department_rows = db.execute(department_stmt).all()

    return {
        "total_users": total,
        "avg_age": round(float(avg_age), 2) if avg_age else 0,
        "department_stats": [
            {"department": department, "count": count}
            for department, count in department_rows
        ],
    }

案例理解

易错点

我的补充