· 约 2 分钟

24-FastAPI进阶-ORM操作数据-分页查询

  • FastAPI
  • Python

学习目标

核心概念

代码示例

from typing import Annotated

from fastapi import Query
from sqlalchemy import func, select


@app.get("/users/page")
def page_users(
    db: DbSession,
    page: Annotated[int, Query(ge=1)] = 1,
    size: Annotated[int, Query(ge=1, le=20)] = 5,
):
    total = db.scalar(select(func.count()).select_from(User)) or 0
    stmt = (
        select(User)
        .order_by(User.id)
        .offset((page - 1) * size)
        .limit(size)
    )
    users = db.scalars(stmt).all()
    return {
        "total": total,
        "page": page,
        "size": size,
        "items": [UserOut.model_validate(user) for user in users],
    }

案例理解

易错点

我的补充