Alembic
Alembic是一个轻量级的数据库迁移工具,可与SQLAlchemy Database Toolkit for Python一起使用。
Alembic使用SQLAlchemy作为底层引擎。
安装
1 | $ pip install alembic |
使用
初始化
1 | $ alembic init alembic |
将会在当前目录下生成一个alembic的目录,像这样:
1 | |--alembic\ |
创建迁移脚本
1 | $ alembic revision -m "first revision" |
执行后,将会在versions下创建一个python脚本: 95cd2fc4eacd_first_revision.py
在生成的对应版本的脚本中实现upgrade和downgrade
1 | def upgrade(): |
在upgrade中创建了用户表以及对应的索引,则需要在downgrade中删除对应的表和索引
1 | def downgrade(): |
由于是单独测试alembic, 需要在alembic.ini中修改数据库连接。
1 | sqlalchemy.url = postgresql://postgres:TopLinker0510@localhost/test |
执行
1 | $ alembic upgrade head |
自动生成
一般地,我们会根据Model自动生成迁移脚本。
修改env.py, 导入当前路径到path中
1
2
3import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)) +"/../")编写Model
base_class.py
1
2
3from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
user.py
1 | from typing import TYPE_CHECKING |
修改env.py,设置target_metadata
1
2from db import Base
target_metadata = Base.metadata执行命令,生成脚本
1
$ alembic revision --autogenerate -m "first revision"
迁移
1
$ alembic upgrade head
详细代码在这里