Repolode
fastapi

fastapi/sqlmodel

SQLModel 是一个 Python 库,用 Python 类操作 SQL 数据库,基于 Pydantic 和 SQLAlchemy,可与 FastAPI 配合使用。

Star
18,447
Fork
893
未关闭 Issue
53
最近提交
7天前

这是什么?

SQLModel 通过 Python 类型注解把数据库表定义为 Python 类。同一个类既是 SQLAlchemy 的表模型,也是 Pydantic 的数据模型,因此数据库访问和请求、响应校验无需重复编写结构定义。

该库是 Pydantic 和 SQLAlchemy 之上的一层薄封装,两者的 API 仍可直接使用。开发者可以用 select 风格的语法编写查询、使用会话,并在需要时调用底层的 SQLAlchemy 功能。示例基于 SQLite 演示建表和增删查操作。

SQLModel 的作者同时也是 FastAPI 的作者,它被设计为与 FastAPI 兼容,适合在 FastAPI 应用中使用。可通过 pip 或 uv 安装。

核心功能

  • 01用一个带类型注解的 Python 类同时定义数据库表和 Pydantic 模型。
  • 02提供基于 SQLAlchemy 的 select 风格查询和会话管理。
  • 03与 FastAPI 配合,用于请求和响应模型。
  • 04保留对底层 SQLAlchemy 和 Pydantic 功能的完整访问。
  • 05支持编辑器自动补全和类型错误提示。

适用场景

  • 开发读写 SQL 数据库的 FastAPI 服务。
  • 减少 ORM 表模型与 API 数据结构之间的重复定义。
  • 将已有的 SQLAlchemy 应用逐步迁移到基于 Pydantic 的模型。

快速上手

  1. 1

    按官方指南安装 uv

  2. 2

    将 SQLModel 添加到项目中

    uv add sqlmodel

标签

常见问题

sqlmodel 是什么?
SQLModel 是一个 Python 库,用 Python 类操作 SQL 数据库,基于 Pydantic 和 SQLAlchemy,可与 FastAPI 配合使用。 SQLModel 通过 Python 类型注解把数据库表定义为 Python 类。同一个类既是 SQLAlchemy 的表模型,也是 Pydantic 的数据模型,因此数据库访问和请求、响应校验无需重复编写结构定义。
sqlmodel 可以免费使用吗?用的什么许可证?
sqlmodel 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
sqlmodel 还在维护吗?
活跃维护中。sqlmodel 最近一次提交是在 2026年10月15日。
sqlmodel 适合用来做什么?
开发读写 SQL 数据库的 FastAPI 服务。 减少 ORM 表模型与 API 数据结构之间的重复定义。 将已有的 SQLAlchemy 应用逐步迁移到基于 Pydantic 的模型。
sqlmodel 怎么安装和运行?
按官方指南安装 uv 将 SQLModel 添加到项目中: uv add sqlmodel
在哪里获取 sqlmodel?
源代码和安装说明在 GitHub 上:https://github.com/fastapi/sqlmodel

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目