Alembic 是一个轻量级的数据库迁移工具,用于对应用程序中的数据库模式进行版本控制和管理。在开发过程中,随着代码的不断迭代和修改,数据库结构往往需要随之更新和维护,这些变更可能包括新增表、修改表结构、添加索引、删除字段等等。Alembic 提供了能够轻松处理这些变更的方式,使得开发者可以更加方便地管理数据库。
一、安装
使用 pip 可以很方便地安装 alembic:
pip install alembic
因为 alembic 是一个 Python 用的库,所以本身应该没有什么依赖。
二、使用
使用 init 命令来初始化 alembic。
alembic init alembic
它会在当前目录下创建一个 alembic 目录,该目录结构如下:
README
env.py
script.py.mako
versions/
其中 README 包含 alembic 的使用说明; env.py 是 Alembic 的主要配置文件,里面存储了数据库连接信息和一些其他配置; script.py.mako 是生成 migration 文件的模板,程序可以替换其中的占位符来生成迁移文件; versions 目录是用于存储迁移脚本的。
使用 revision 命令创建迁移。
alembic revision -m "Create user table"
该命令会在当前目录下的 versions 目录中生成一个迁移文件,大约长这样:
"""Create user table
Revision ID: e9de00ca8
Revises:
Create Date: 2022-07-27 16:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'e9de00ca8'
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
op.create_table(
'users',
sa.Column('id', sa.Integer, primary_key=True),
sa.Column('username', sa.String(50), nullable=False),
sa.Column('email', sa.String(120), nullable=False)
)
def downgrade():
op.drop_table('users')
这个文件中包括了一个 upgrade 和一个 downgrade 函数,这两个函数负