源自创业团队实践的 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
按官方指南安装 uv
- 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 数据每日更新。
相关项目
面向 Node.js 与 TypeScript 的 ORM,提供类型安全的数据库访问,支持 PostgreSQL、MySQL、SQLite、MongoDB 等。
Go 语言的全功能 ORM 库,可将结构体映射到数据库表,支持关联、钩子、事务和自动迁移。
基于 Data Mapper 与 Unit of Work 模式的 Node.js TypeScript ORM,支持多种 SQL 数据库与 MongoDB。
一个 Python 库,在生成过程中约束 LLM 输出,使其符合指定的类型、正则、JSON Schema 或语法。
基于标准 Python 类型提示构建 API 的 Python Web 框架,内置数据校验与自动生成的交互式文档。