简介

SqlAlchemy是一个常用的 Python ORM 库,用于操作数据库。

Alembic 是一个轻量级的数据库迁移工具,用于 SqlAlchemy ORM 库。它提供了一种简单的方式来定义和管理数据库模式的变化。

安装

pip install alembic

用法

初始化

初始化一个迁移目录migrations

包括了一个alembic.ini配置文件和一个versions目录。

alembic init migrations

配置文件

alembic.ini 是 Alembic 的配置文件。

需要配置数据库连接字符串。

修改sqlalchemy.url的值为数据库连接字符串。

sqlalchemy.url = driver://user:pass@localhost/dbname

创建迁移脚本

使用revision命令创建一个新的迁移脚本。

alembic revision -m "create table user"

编写迁移脚本

上一步中生成的迁移脚本位于migrations/versions目录下。

脚本中有两个函数upgradedowngrade,分别用于升级和降级数据库。

比如要新增一个user表,可以在upgrade函数中添加创建表的语句。

def upgrade():
    op.create_table(
        'user',
        sa.Column('id', sa.Integer, primary_key=True),
        sa.Column('name', sa.String(50), nullable=False),
        sa.Column('email', sa.String(50), nullable=False),
    )

def downgrade():
    op.drop_table('user')

比如要新增一个email字段,可以在upgrade函数中添加添加字段的语句。

def upgrade():
    op.add_column('user', sa.Column('email', sa.String(50), nullable=False))

def downgrade():
    op.drop_column('user', 'email')

执行迁移

使用upgrade命令执行迁移。

alembic upgrade head

回滚迁移

使用downgrade命令回滚迁移。

alembic downgrade -1

自动生成迁移脚本

使用autogenerate命令自动生成迁移脚本。

alembic revision --autogenerate -m "add email field"

参考