SQLModel 是一个基于 Python 的 ORM(对象关系映射)库,它结合了 SQLAlchemyPydantic 的优势,旨在简化与数据库的交互。SQLModel 主要用于构建与数据库交互的 Python 应用,特别适用于 FastAPI 等 Web 框架。


SQLModel 的特点

  1. 基于 SQLAlchemy:SQLModel 是 SQLAlchemy 的一个高级封装,提供更简单的 API。

  2. 集成 Pydantic:内置数据校验功能,可以自动解析和校验数据类型。

  3. 简单易用:相比 SQLAlchemy,SQLModel 代码更少,更易读。

  4. 支持同步和异步:既可以使用同步方式,也可以结合 async 进行异步数据库操作。

  5. 自动生成数据库表:支持通过 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 也更容易上手! 🚀