FastCRUD 使用教程

FastCRUD 使用教程

fastcrud FastCRUD is a Python package for FastAPI, offering robust async CRUD operations and flexible endpoint creation utilities. fastcrud 项目地址: https://gitcode.com/gh_mirrors/fas/fastcrud

1. 项目介绍

FastCRUD 是一个为 FastAPI 设计的 Python 包,它提供了强大的异步 CRUD 操作和灵活的端点创建工具。通过高级特性如自动检测连接条件、动态排序以及偏移量和游标分页,FastCRUD 能够简化数据库交互过程,并优化性能。

FastCRUD 的主要特点包括:

  • 完全异步:利用 Python 的异步特性进行非阻塞数据库操作。
  • 支持 SQLAlchemy 2.0:与最新版本的 SQLAlchemy 配合使用,提供健壮的数据库交互。
  • 强大的 CRUD 功能:提供高效的 CRUD 操作,并支持连接操作。
  • 动态查询构建:支持动态构建复杂查询,包括过滤、排序和分页。
  • 高级连接操作:简化与其他模型的 SQL 连接操作,自动检测连接条件。
  • 内置偏移量分页:提供即用的偏移量分页。
  • 游标分页:为大数据集实现高效分页,适合无限滚动界面。
  • 模块化和可扩展:设计易于扩展和定制,以满足不同需求。
  • 自动生成端点:简化了添加 CRUD 端点的过程,支持自定义依赖和配置。

2. 项目快速启动

在开始使用 FastCRUD 之前,确保你的项目已经安装了以下依赖:

  • Python 3.9 或更高版本
  • FastAPI
  • SQLAlchemy 2.0.21 或更高版本
  • Pydantic 2.4.1 或更高版本
  • SQLAlchemy-Utils(可选,但推荐)

安装 FastCRUD:

pip install fastcrud

以下是一个简单的示例,演示如何使用 FastCRUD 的 crud_router 自动创建端点:

models.py

from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import DeclarativeBase

class Base(DeclarativeBase):
    pass

class Item(Base):
    __tablename__ = 'items'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    description = Column(String)

schemas.py

from pydantic import BaseModel

class ItemCreateSchema(BaseModel):
    name: str
    description: str

class ItemUpdateSchema(BaseModel):
    name: str
    description: str

main.py

from typing import AsyncGenerator
from fastapi import FastAPI
from fastcrud import FastCRUD, crud_router
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from sqlalchemy.orm import sessionmaker
from yourapp.models import Base, Item
from yourapp.schemas import ItemCreateSchema, ItemUpdateSchema

DATABASE_URL = "sqlite+aiosqlite:///./test.db"
engine = create_async_engine(DATABASE_URL, echo=True)
async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)

async def get_session() -> AsyncGenerator[AsyncSession, None]:
    async with async_session() as session:
        yield session

async def lifespan(app: FastAPI):
    async with engine.begin() as conn:
        await conn.run_sync(Base.metadata.create_all)
    yield

app = FastAPI(lifespan=lifespan)

item_router = crud_router(
    session=get_session,
    model=Item,
    create_schema=ItemCreateSchema,
    update_schema=ItemUpdateSchema,
    path="/items",
    tags=["Items"],
)

app.include_router(item_router)

启动 FastAPI 服务后,你将拥有自动生成的 CRUD 端点。

3. 应用案例和最佳实践

FastCRUD 的设计使其适用于各种需要 CRUD 操作的场景,以下是一些应用案例和最佳实践:

  • RESTful API 服务:构建标准 RESTful API,提供对资源的增删改查操作。
  • 数据管理界面:为内部管理工具创建数据管理端点,实现快速的数据检索和更新。
  • 前后端分离应用:在后端提供数据操作接口,前端应用通过这些接口进行数据交互。

最佳实践包括:

  • 利用 FastCRUD 的自动端点生成功能减少重复代码。
  • 在需要更细粒度控制时,直接在 FastAPI 端点中集成 FastCRUD。
  • 使用 Pydantic 模型进行数据验证和序列化,确保数据的一致性和正确性。

4. 典型生态项目

FastCRUD 作为一个 FastAPI 的生态项目,与以下项目配合使用效果最佳:

  • SQLAlchemy:用于数据库操作的 ORM 工具。
  • Pydantic:用于数据验证和序列化的库。
  • FastAPI:构建 API 的现代框架。

通过整合这些项目,开发者可以快速搭建起高效、健壮的 RESTful 服务。

fastcrud FastCRUD is a Python package for FastAPI, offering robust async CRUD operations and flexible endpoint creation utilities. fastcrud 项目地址: https://gitcode.com/gh_mirrors/fas/fastcrud

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

劳治亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值