本文目录导读:

是的,SQLAlchemy 的数据库迁移通常使用 Alembic,它们是官方推荐的组合。
为什么使用 Alembic?
Alembic 是由 SQLAlchemy 的作者 Mike Bayer 开发的数据库迁移工具,专门为 SQLAlchemy 设计:
- 官方推荐:与 SQLAlchemy 深度集成
- 版本控制:每次数据库变更都有历史记录
- 自动生成:自动检测模型变化并生成迁移脚本
- 双向迁移:支持升级(upgrade)和降级(downgrade)
- 环境一致:确保开发、测试、生产环境的数据库结构同步
基本使用流程
安装
pip install alembic
初始化
alembic init alembic
配置(alembic.ini 和 env.py)
# alembic/env.py from your_app.models import Base # 导入你的模型 Base target_metadata = Base.metadata # 关键配置
创建迁移
# 自动检测模型变化生成迁移脚本 alembic revision --autogenerate -m "add user table"
执行迁移
# 升级到最新版本 alembic upgrade head # 降级一个版本 alembic downgrade -1
示例迁移文件
"""add user table
Revision ID: abc123
Revises:
Create Date: 2023-01-01
"""
from alembic import op
import sqlalchemy as sa
def upgrade():
op.create_table(
'users',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=50), nullable=True),
sa.PrimaryKeyConstraint('id')
)
def downgrade():
op.drop_table('users')
替代方案
虽然 Alembic 是最常用方案,但也有其他选择:
- Flask-Migrate:Flask 应用的包装器,底层使用 Alembic
- Alembic + Aerich:Tortoise ORM 的迁移工具
- 自定义 SQL 脚本:手动管理迁移(不推荐)
是的,Alembic 是 SQLAlchemy 生态系统中数据库迁移的事实标准,如果你使用 SQLAlchemy 进行数据库操作,强烈建议配合 Alembic 管理数据库版本变更。