跳转至

SQLAlchemy CRUD Plus

基于 SQLAlchemy 2.0 的异步 CRUD 工具。它把常见的创建、查询、更新、删除、过滤、排序、关系加载和批量操作整理成一组稳定 API,适合 FastAPI 等异步项目使用。

适合什么场景

  • 你已经在使用 SQLAlchemy 2.0 Async ORM
  • 你希望用统一方法处理 CRUD、分页、过滤和排序
  • 你需要 relationship 预加载、动态 JOIN 或字段加载控制
  • 你想保留 SQLAlchemy 原生能力,而不是引入一套新 ORM

安装

pip install sqlalchemy-crud-plus
uv add sqlalchemy-crud-plus

最小示例

from sqlalchemy_crud_plus import CRUDPlus

user_crud = CRUDPlus(User)

# 创建
user = await user_crud.create_model(session, user_data, commit=True)

# 查询
user = await user_crud.select_model(session, pk=1)
users = await user_crud.select_models(session, is_active=True, limit=20)

# 过滤和排序
users = await user_crud.select_models_order(
    session,
    sort_columns='created_at',
    sort_orders='desc',
    name__like='%admin%'
)

# 更新和删除
await user_crud.update_model(session, pk=1, obj={'name': 'new name'})
await user_crud.delete_model(session, pk=1)

主要能力

能力 用法入口
基础 CRUD create_modelselect_modelupdate_modeldelete_model
条件过滤 name__likeage__ge__or__
批量操作 create_modelsbulk_create_modelsbulk_update_models
关系查询 load_strategiesjoin_conditionsload_options
字段加载 load_onlydeferundefer
事务控制 flush=Truecommit=Truesession.begin()
复合主键 pk=(user_id, role_id)

下一步