跳转到主要内容

FastAPI分页

项目描述

logo

license test codecov downloads pypi black

简介

fastapi-pagination 是一个 Python 库,旨在简化 FastAPI 应用程序中的分页。它提供了一系列实用函数和数据模型,以帮助您分页数据库查询并向客户端返回分页响应。

使用 fastapi-pagination,您可以在 FastAPI 端点函数中轻松定义分页参数,并使用它们生成包含所需数据子集的分页响应。该库支持多种分页策略,包括基于游标的分页和基于页面的分页。

fastapi-pagination 基于流行的 fastapi 库构建,与各种 SQL 和 NoSQL 数据库框架兼容。它还支持 async/await 语法,并且与 Python 3.8 及更高版本兼容。

功能

  • 简化 FastAPI 应用程序中的分页。
  • 支持多种分页策略,包括基于游标的分页和基于页面的分页
  • 与各种 SQL 和 NoSQL 数据库框架兼容,包括 SQLAlchemyTortoise ORMPyMongo
  • 支持 async/await 语法。
  • 与 Python 3.8 及更高版本兼容。

有关如何使用 fastapi-pagination 的更多信息,请参阅 官方文档


安装

pip install fastapi-pagination

快速入门

您只需将 Page 类用作端点的返回类型,并对要分页的数据调用 paginate 函数即可。

from fastapi import FastAPI
from pydantic import BaseModel, Field

# import all you need from fastapi-pagination
from fastapi_pagination import Page, add_pagination, paginate

app = FastAPI()  # create FastAPI app


class UserOut(BaseModel):  # define your model
    name: str = Field(..., example="Steve")
    surname: str = Field(..., example="Rogers")


users = [  # create some data
    # ...
]


@app.get('/users')  
async def get_users() -> Page[UserOut]:  # use Page[UserOut] as return type annotation
    return paginate(users)  # use paginate function to paginate your data


add_pagination(app)  # important! add pagination to your app

在处理数据库时,请小心,因为默认的 paginate 将需要将所有数据加载到内存中。

例如,如果您使用 SQLAlchemy,您可以使用 fastapi_pagination.ext.sqlalchemy 模块中的 paginate

from sqlalchemy import select
from fastapi_pagination.ext.sqlalchemy import paginate


@app.get('/users')
def get_users(db: Session = Depends(get_db)) -> Page[UserOut]:
    return paginate(db, select(User).order_by(User.created_at))

来自 Quickstart 的代码将生成以下 OpenAPI 模式

app-example

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

fastapi_pagination-0.12.29.tar.gz (26.3 kB 查看哈希值)

上传时间

构建分布

fastapi_pagination-0.12.29-py3-none-any.whl (42.5 kB 查看哈希值)

上传时间 Python 3

由以下支持