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
,替换为:
#有几个模型就导几个模型
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