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
 3- import os 
 import sys
 sys.path.append(os.path.dirname(os.path.abspath(__file__)) +"/../")
- 编写Model - base_class.py - 1 
 2
 3- from sqlalchemy.ext.declarative import declarative_base 
 Base = declarative_base()
user.py
| 1 | from typing import TYPE_CHECKING | 
- 修改env.py,设置target_metadata - 1 
 2- from db import Base 
 target_metadata = Base.metadata
- 执行命令,生成脚本 - 1 - $ alembic revision --autogenerate -m "first revision" 
- 迁移 - 1 - $ alembic upgrade head - 详细代码在这里