Alembic - 用于 SQLAlchemy 的数据库迁移工具

2023-10-23 10:44:03 浏览数 (2)

Alembic 是SQLAlchemy的作者编写的数据库迁移工具。

安装配置

代码语言:javascript复制
pip install alembic

#初始化
alembic init {指定目录,比如 alembic }

配置

alembic.ini中的sqlalchemy.url改为你数据库地址:sqlalchemy.url = sqlite:///./database/app.sqlite3

迁移脚本

https://alembic.sqlalchemy.org/en/latest/tutorial.html#create-a-migration-script

代码语言:javascript复制
#创建
alembic revision -m "create account table"
#执行,升到最高版本
alembic upgrade head

#创建
alembic revision -m "Add a column"
#执行,升到最高版本
alembic upgrade head

#其他命令
alembic current
alembic downgrade base

迁移脚本2(自动生成迁移)

上面那种方式是需要手动填充表字段,下面这种方式可以自动生成

https://alembic.sqlalchemy.org/en/latest/autogenerate.html

修改alembic文件夹下的env.py,找到target_metadata = None,替换为:

代码语言:javascript复制
  #有几个模型就导几个模型
  from app.models.article import ArticleModel
  from app.models.category import CategoryModel
  from core.db.sqlite import Base
  target_metadata = Base.metadata 

一些文档说要知道路径,否则会引入失败;我这用的新版本没遇到这个问题

迁移命令

代码语言:javascript复制
#创建一个迁移版本
alembic revision --autogenerate -m "create table"

#执行迁移,升到最高版本
alembic upgrade head

生成sql

Alembic 的一个主要功能是将迁移生成为 SQL 脚本

https://alembic.sqlalchemy.org/en/latest/offline.html

代码语言:javascript复制
alembic upgrade ec32dafdf7fe --sql

#获取起始版本
alembic upgrade 1975ea83b712:ae1027a6acf --sql

#导出到文件
alembic upgrade 1975ea83b712:ae1027a6acf --sql > migration.sql

参考

https://www.cnblogs.com/wanghong1994/p/16687895.html

https://segmentfault.com/a/1190000006949536

0 人点赞