简介
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
目录下。
脚本中有两个函数upgrade
和downgrade
,分别用于升级和降级数据库。
比如要新增一个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"