SQLModel 是一个基于 Python 的 ORM(对象关系映射)库,它结合了 SQLAlchemy 和 Pydantic 的优势,旨在简化与数据库的交互。SQLModel 主要用于构建与数据库交互的 Python 应用,特别适用于 FastAPI 等 Web 框架。
SQLModel 的特点
-
基于 SQLAlchemy:SQLModel 是 SQLAlchemy 的一个高级封装,提供更简单的 API。
-
集成 Pydantic:内置数据校验功能,可以自动解析和校验数据类型。
-
简单易用:相比 SQLAlchemy,SQLModel 代码更少,更易读。
-
支持同步和异步:既可以使用同步方式,也可以结合 async 进行异步数据库操作。
-
自动生成数据库表:支持通过 Python 类定义数据库模型,并自动生成表结构。
SQLModel 安装
pip install sqlmodel
使用示例
1. 定义数据模型
SQLModel 使用 Python 的 dataclass 风格定义数据库模型:
from sqlmodel import SQLModel, Field
class User(SQLModel, table=True):
id: int = Field(default=None, primary_key=True)
name: str
age: int
• table=True 表示这是一个数据库表。
• Field() 允许设置主键、默认值等字段属性。
2. 创建数据库表
from sqlmodel import create_engine, SQLModel
engine = create_engine("sqlite:///database.db")
# 创建数据库表
SQLModel.metadata.create_all(engine)
3. 插入数据
from sqlmodel import Session
user = User(name="Alice", age=25)
with Session(engine) as session:
session.add(user)
session.commit()
4. 查询数据
from sqlmodel import select
with Session(engine) as session:
users = session.exec(select(User)).all()
for user in users:
print(user.name, user.age)
SQLModel vs SQLAlchemy
特性 | SQLModel | SQLAlchemy |
---|---|---|
代码简洁性 | ✅ 更简洁 | ❌ 代码较多 |
数据验证 | ✅ 内置 Pydantic | ❌ 需额外实现 |
兼容性 | ✅ 基于 SQLAlchemy | ✅ 强大但复杂 |
适用场景 | ✅ FastAPI、快速开发 | ✅ 更适合复杂业务 |
适用场景
• FastAPI + SQLModel:SQLModel 是 FastAPI 的天然搭档,适用于 Web API 项目。
• 轻量级数据库操作:适用于简单的数据存储需求,如小型应用、原型开发。
• 数据建模 & 验证:结合 Pydantic 进行数据结构定义和校验。
如果你之前使用过 SQLAlchemy,SQLModel 会让你的代码更加清晰简洁;如果你是新手,SQLModel 也更容易上手! 🚀