Alembic 如何使用?
数据库版本化
通常我们会将我们的代码放入到某个VCS(版本控制系统)中,进行可追溯的版本管理。一个项目除了代码,通常还会有一个数据库,这个数据库可能会随着项目的演进发生变化,甚至需要可以回滚到过去的某个状态,于是一些工具将数据库的版本化也纳入了管理。
在之前的数据库操作中,我们新增一个字段是不是每次都得删除数据库表,然后再重新将新创建的数据库表映射到数据库中。这样操作是不是很蛋疼?是吧?于是Sqlalchemy作者拜尔为了解决这一问题,开发了Alembic这一迁移工具。
Alembic 作用:
方便数据库与ORM模型的迁移与映射。
Alembic 安装:
pip install alembic
初始化
alembic init YOUR_ALEMBIC_DIR
'''
随后你的项目目录应该会新增一个alembic.ini文件以及一个YOUR_ALEMBIC_DIR目录,最好指定一个符合自己项目风格的命名。
'''
接下来的操作都是围绕这个目录
alembic.ini
提供了一些基本的配置env.py
每次执行Alembic都会加载这个模块,主要提供项目Sqlalchemy Model 的连接script.py.mako
迁移脚本生成模版versions
存放生成的迁移脚本目录
'''
yourproject/
alembic.ini
YOUR_ALEMBIC_DIR/
env.py
README
script.py.mako
versions/
'''
你需要编辑alembic.ini
文件去指定Alembic的数据库连接
sqlalchemy.url = mysql+pymysql://root:admin@localhost/alembic_demo
# 注:和数据库连接信息一样
找到env.py文件,修改target_metadata参数
import os
import sys
import alembic_demo
# 把当前项目路径加入到path中
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
target_metadata = alembic_demo.Base.metadata
创建数据库迁移文件,命令如下:
alembic revision --autogenerate -m "first commit"
创建成功会在version目录下创建一个迁移文件。
将迁移文件映射到数据库中,命令如下:
alembic upgrade head
OK,数据库表已成功映射到数据库中。
步骤很多,但只要你多敲几遍,你就会熟悉掌握alembic的用法。当然,如果你实在记不住,再看看我的这篇博文。