共计 1104 个字符,预计需要花费 3 分钟才能阅读完成。
SQLModel 是一个结合了 SQLAlchemy 和 Pydantic 优势的库,用于更简洁地定义数据库模型,并具备自动类型检查和数据验证能力,非常适合与 FastAPI 一起使用。
一、SQLModel 的特点
- 基于 SQLAlchemy 的 ORM 功能,兼容其所有能力;
- 继承自 Pydantic 的 BaseModel,支持类型注解和数据验证;
- 支持同步和异步两种模式;
- 内置对 SQLite 的支持,适合快速开发和原型设计。
二、安装 SQLModel
pip install sqlmodel
三、定义模型类
使用 SQLModel 创建数据模型时,字段需要指定类型,同时可以使用 Field 指定主键、索引等信息:
from sqlmodel import SQLModel, Field
class User(SQLModel, table=True):
id: int = Field(default=None, primary_key=True)
name: str
age: int
四、创建数据库并连接
以 SQLite 为例,可以直接创建一个本地数据库文件
from sqlmodel import create_engine
sqlite_url = "sqlite:///./test.db"
engine = create_engine(sqlite_url, echo=True) # echo=True 会输出 SQL 日志
五、自动建表
SQLModel.metadata.create_all(engine)
六、插入数据
使用 SQLAlchemy 的 Session 操作数据
from sqlmodel import Session
user = User(name="Alice", age=25)
with Session(engine) as session:
session.add(user)
session.commit()
七、查询数据
with Session(engine) as session:
result = session.query(User).filter(User.name == "Alice").first()
print(result)
八、集成到 FastAPI 项目
可以在 FastAPI 启动时初始化数据库连接,在依赖注入中统一管理 Session 实例
from fastapi import Depends
def get_session():
with Session(engine) as session:
yield session
九、总结
SQLModel 是构建 FastAPI + ORM 项目的优雅选择,它不仅兼容 Pydantic 模型,还可以简洁定义表结构,降低了数据库操作的复杂度。下一节将介绍 CRUD 的实际用法,包括增删改查操作函数的封装与使用。
正文完