【Python】alembic: SQLalchemy 数据库版本迁移工具

Alembic

官网:https://alembic.readthedocs.io/

安装

在虚拟环境下安装:

pip install alembic

初始化alembic环境

# 切换到项目根目录下
alembic init alembic
# init之后的alembic指的是保存迁移文件的目录名称。
# 执行之后会在项目根目录下生成 alembic.ini文件 和制定名称的迁移文档保存目录()。

修改配置文件

修改alembic.ini配置文件,只修改数据库连接部分即可,
sqlalchemy.url = driver://user:pass@localhost:port/dbname
修改为

# mysql
sqlalchemy.url = mysql+pymysql://root:@localhost/linux_study

# postgres
sqlalchemy.url = postgresql+psycopg2://root:123456@127.0.0.1/linux_study

修改alembic/env.py
target_metadata = None
修改为

import sys                                             
from os.path import abspath, dirname                   
sys.path.append(dirname(dirname(abspath(__file__))))   
from modules.models import Base                        
target_metadata = Base.metadata                        

自动创建版本

使用alembic revision -m “注释” 创建数据库版本,上面我们修改了配置文件alembic/env.py,指定了target_metadata,这里可以使用–autogenerate参数自动生成迁移脚本。

$ alembic revision --autogenerate -m "initdb"
升级数据库
  1. 生成升级/降级文档

在models.py所在目录下运行升级命令:

alembic revision --autogenerate -m "add xxxx column"  # 引号中为注释,只能用英文,不能写汉字

执行成功会看到终端中输出的 … done

升级之后会在 迁移文档目录中生成对应的迁移文件。

打开可以检查需要升级的数据库的信息, version信息等

2、执行升级命令

alembic upgrade head  # 升级到最新版本

head是指的版本号,针对哪个版本升级数据库,也可以写上述那个versions目录下生成的那个版本号4624XXXX,如果没有重复的话可以只写前几位。

head目前是指向最新的版本。

打开这个数据库看一下,可以发现其表格结构已经变了

并且还出现了一个存储当前版本号的表alembic_version。

3、执行降级

alembic downgrade Revision-id -1

-1 是指降级到该Revision的前一个版本

注意:sqlite不支持数据库降级

其他常用参数

更新数据库

$ alembic upgrade 版本号

更新到最新版

alembic upgrade head

降级数据库

$ alembic downgrade 版本号

更新到最初版

alembic downgrade head

离线更新(生成sql)

alembic upgrade 版本号 --sql > migration.sql

从特定起始版本生成sql

alembic upgrade 版本一:版本二 --sql > migration.sql

查询当前数据库版本号

数据库中查看alembic_version表。

清除所有版本

将versions删掉,并删除alembic_version表

查看记录和历史

alembic history
  .

参考链接:

https://blog.csdn.net/deerlux/article/details/50181997

https://www.cnblogs.com/xiaoming279/p/6641601.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Alembic是由SQLAlchemy的作者编写的数据库迁移工具。它可以帮助我们在不破坏数据的情况下更新数据库表的结构。使用Alembic可以向数据库发出ALTER语句以更改表的结构和其他结构。使用Alembic进行数据库迁移的过程是通过创建迁移环境、生成迁移文件、同步数据库等步骤来完成的。 具体使用Alembic进行数据库迁移的步骤如下: 1. 安装Alembic:使用pip install alembic命令进行安装。 2. 初始化迁移环境:使用alembic init migrations命令初始化迁移环境,创建alembic.ini文件和env.py文件。 3. 修改配置:修改alembic.ini配置文件,将sqlalchemy.url的值配置为数据库连接字符串。 4. 生成迁移文件:使用alembic revision -m "first comment"命令生成迁移文件,可以通过--autogenerate选项参数来自动生成迁移脚本。 5. 同步数据库:使用alembic upgrade head命令将数据库表结构更新到最新版本。 除了上述步骤外,还可以使用其他命令进行数据库迁移的管理和操作: - 查看当前数据库版本:使用alembic current命令可以查看数据库当前所处的版本。 - 查看迁移历史:使用alembic history命令可以查看项目目录中的迁移脚本信息。 - 更新数据库到指定版本:使用alembic upgrade 版本号命令可以将数据库更新到指定的版本。 - 降级数据库:使用alembic downgrade 版本号命令可以将数据库降级到指定的版本。 - 离线更新:使用alembic upgrade 版本号 --sql > migration.sql命令可以将数据库更新生成SQL脚本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值