SQLAlchemy迁移用Alembic吗

wen python案例 1

本文目录导读:

SQLAlchemy迁移用Alembic吗

  1. 为什么使用 Alembic?
  2. 基本使用流程
  3. 示例迁移文件
  4. 替代方案

是的,SQLAlchemy 的数据库迁移通常使用 Alembic,它们是官方推荐的组合。

为什么使用 Alembic?

Alembic 是由 SQLAlchemy 的作者 Mike Bayer 开发的数据库迁移工具,专门为 SQLAlchemy 设计:

  1. 官方推荐:与 SQLAlchemy 深度集成
  2. 版本控制:每次数据库变更都有历史记录
  3. 自动生成:自动检测模型变化并生成迁移脚本
  4. 双向迁移:支持升级(upgrade)和降级(downgrade)
  5. 环境一致:确保开发、测试、生产环境的数据库结构同步

基本使用流程

安装

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 管理数据库版本变更。

抱歉,评论功能暂时关闭!