简介
Alembic是由SQLAlchemy的作者创建的数据库迁移工具。数据库迁移是在数据库的生命周期中处理数据库架构更改的过程。例如,你可能需要添加或删除表,或者更改表的结构。
Alembic的操作流程
首先,我们需要一个基础的表。例如,我有如下的一个表:
class Test(Base):
__tablename__ = 'test'
id = Column(Integer, primary_key=True)
title = Column(String(200))
url = Column(String(200))
tag = Column(String(200))
现在,我打算添加一个新的字段published
:
class Test(Base):
__tablename__ = 'test'
id = Column(Integer, primary_key=True)
title = Column(String(200))
url = Column(String(200))
tag = Column(String(200))
published = Column(String(200))
以下是使用Alembic进行数据库版本管理的步骤:
-
安装Alembic:我使用的是 poetry,所以安装命令为:
poetry add alembic
-
初始化Alembic:使用以下命令进行初始化:
alembic init alembic
注意,
init
后面的名字可以自己定义。 -
修改配置文件:修改
alembic.ini
中的数据库链接地址:vim alembic.ini
sqlalchemy.url = mysql+pymysql://username:[email protected]/db
-
修改
env.py
:在env.py
中修改target_metadata
变量为你的Base的metadata:vim alembic/env.py
加入以下代码:
from myapp import Base target_metadata = Base.metadata
-
创建迁移脚本:修改你的表结构后,创建迁移脚本:
alembic revision --autogenerate -m "添加了一些字段"
迁移脚本会在
alembic/versions/
下面生成,检查没有问题之后就可以 upgrade 到数据库中。 -
升级数据库:使用以下命令将更改应用到数据库:
alembic upgrade head
对于不同环境的处理,你可以创建不同环境的alembic.ini
配置不同环境的数据库链接,然后在升级时指定对应的配置文件:
alembic -c alembic_prod.ini upgrade head
欢迎关注我的博客www.bboy.app
Have Fun