首页 公告 项目 RSS

Alembic:Python的数据库版本管理工具

December 4, 2023 本文有 600 个字 需要花费 2 分钟阅读

简介

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进行数据库版本管理的步骤:

  1. 安装Alembic:我使用的是 poetry,所以安装命令为:

    poetry add alembic

  2. 初始化Alembic:使用以下命令进行初始化:

    alembic init alembic

    注意,init后面的名字可以自己定义。

  3. 修改配置文件:修改alembic.ini中的数据库链接地址:

    vim alembic.ini

    sqlalchemy.url = mysql+pymysql://username:[email protected]/db

  4. 修改env.py:在env.py中修改target_metadata变量为你的Base的metadata:

    vim alembic/env.py

    加入以下代码:

    from myapp import Base
    target_metadata = Base.metadata
    
  5. 创建迁移脚本:修改你的表结构后,创建迁移脚本:

    alembic revision --autogenerate -m "添加了一些字段"

    迁移脚本会在alembic/versions/下面生成,检查没有问题之后就可以 upgrade 到数据库中。

  6. 升级数据库:使用以下命令将更改应用到数据库:

    alembic upgrade head

对于不同环境的处理,你可以创建不同环境的alembic.ini配置不同环境的数据库链接,然后在升级时指定对应的配置文件:

alembic -c alembic_prod.ini upgrade head

欢迎关注我的博客www.bboy.app

Have Fun