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

编辑于 2024-04-08 03:38:00 阅读 1674

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

安装配置

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

#创建
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,替换为:

  #有几个模型就导几个模型
  from app.models.article import ArticleModel
  from app.models.category import CategoryModel
  from core.db.sqlite import Base
  target_metadata = Base.metadata 

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

迁移命令

#开发的时候可能创建很多个版本,上线时想合并成一个:删除数据库和多个版本的文件,重新生成即可

#创建一个迁移版本
alembic revision --autogenerate -m "create table"

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

生成sql

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

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

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

广而告之,我的新作品《语音助手》上架Google Play了,欢迎下载体验