Alembic 如何使用?

数据库版本化

​ 通常我们会将我们的代码放入到某个VCS(版本控制系统)中,进行可追溯的版本管理。一个项目除了代码,通常还会有一个数据库,这个数据库可能会随着项目的演进发生变化,甚至需要可以回滚到过去的某个状态,于是一些工具将数据库的版本化也纳入了管理。

​ 在之前的数据库操作中,我们新增一个字段是不是每次都得删除数据库表,然后再重新将新创建的数据库表映射到数据库中。这样操作是不是很蛋疼?是吧?于是Sqlalchemy作者拜尔为了解决这一问题,开发了Alembic这一迁移工具。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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的用法。当然,如果你实在记不住,再看看我的这篇博文。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄