alembic生成数据库升级脚本

本文介绍如何使用Alembic处理SQLAlchemy定义的数据库升级。包括生成可配置的升级脚本、编辑配置文件与环境文件、执行数据库升级及升降级操作等步骤。

alembic可以处理sqlalchemy定义的数据库的升级.

1. 生成可配置的升级脚本 alembic init update

.
├── alembic.ini
└── update
    ├── env.py
    ├── env.pyc
    ├── README
    ├── script.py.mako
    └── versions

2. 编辑alembic.ini文件来建立alembic与数据库实体之间的关联

sqlalchemy.url = driver://user:pass@localhost/dbname

改成和自己的数据库engine相对应

3. 编辑env.py来与sqlalchemy建立关联

sqlalchemy定义了数据库与类之间的映射, 为了关联alembic与sqlalchemy, 需要修改target_metadata = None

在定义数据库表时, 我们需要继承Base = declarative_base(), 这时可以改成target_metadata = Base.metadata即可. 如果是用的elixir库, 可以改成target_metadata = elixir.metadata

4. alembic处理升级

alembic在处理数据库升级时, 需要知道当前的数据库更新到了哪个升级脚本, 在数据库中会有alembic_version记录这一项, 如果没有的话, 需要运行alembic history来查看当前的脚本之间的前后继关系

c13aac80dc0d -> a6bd6b66dc68 (head), v1.0.6
8af8ba526412 -> c13aac80dc0d, 12_27
c07041b991dd -> 8af8ba526412, v1.0.4
d9e1223a5cc6 -> c07041b991dd, 002_update_for_12.2
<base> -> d9e1223a5cc6, v1.0.2

如果我确定我当前的数据库是由c13aac80dc0d对应的脚本升级上来的, 那么执行alembic stamp c13aac80dc0d来更新数据库, 表明当前数据库对应到了这个脚本, 此时可以执行alembic current来查看确实是这个
版本.

之后, 可以基于当前的数据库与我们已经定义好的表之间自动生成升级脚本alembic revision --autogenerate -m "create update files", 可能还需要改一些语句, 或者数据库表之间的关系的调整还涉及到数据>记录的内容更改与填充.

5. 升降级命令

alembic upgrade +1
alembic downgrade -1

6. 建议

不要自己去写python或者Sql脚本创建数据库实体, 建议从一开始就用alembic操作数据库. 就是说在项目里面跟数据库相关的操作, 只需要定义好了orm, 之后代码里面做增删查改就够了. 其它的创建数据库, 创建表
, 更改表结构的操作都由alembic来接管.

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、付费专栏及课程。

余额充值