FastAPI中的数据库ORM - SQLModel和Alembic
本指南将介绍如何在FastAPI项目中使用SQLModel进行ORM操作,以及如何使用Alembic管理数据库迁移。
1. SQLModel介绍
SQLModel是一个基于Pydantic和SQLAlchemy的ORM库,专为FastAPI设计。
- Name
特性
- Type
- features
- Description
SQLModel主要特性
SQLModel特性
# SQLModel的主要优势
• 完全兼容FastAPI和Pydantic
• 类型提示和自动补全
• 简洁的API设计
• 自动数据验证
• 支持异步操作
• 与SQLAlchemy生态集成
SQLModel示例
from sqlmodel import SQLModel, Field, create_engine
from typing import Optional
# 定义模型
class User(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
username: str
email: str
is_active: bool = True
# 创建数据库引擎
engine = create_engine("sqlite:///database.db")
# 创建表
SQLModel.metadata.create_all(engine)
# CRUD操作
from sqlmodel import Session
def create_user(user: User):
with Session(engine) as session:
session.add(user)
session.commit()
session.refresh(user)
return user
Alembic功能
• 数据库版本控制
• 自动生成迁移脚本
• 向前和向后迁移
• 分支迁移支持
• 依赖管理
• 多数据库支持
配置步骤
1. 安装Alembic
pip install alembic
2. 初始化Alembic
alembic init alembic
3. 配置alembic.ini
• 设置sqlalchemy.url
• 配置其他选项
4. 修改env.py
• 导入SQLModel
• 设置target_metadata
• 配置数据库URL
迁移步骤
1. 生成迁移脚本
alembic revision --autogenerate -m "描述"
2. 检查迁移脚本
• 查看upgrade()函数
• 查看downgrade()函数
• 确认变更是否正确
3. 执行迁移
• 升级: alembic upgrade head
• 降级: alembic downgrade -1
• 查看历史: alembic history
最佳实践
SQLModel最佳实践:
• 合理设计模型关系
• 使用异步会话管理
• 实现依赖注入
• 处理好事务管理
Alembic最佳实践:
• 经常进行数据库备份
• 迁移前测试
• 编写有意义的迁移说明
• 保持迁移历史整洁