前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Alembic - 用于 SQLAlchemy 的数据库迁移工具

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

作者头像
崔哥
发布2023-10-23 10:44:03
4730
发布2023-10-23 10:44:03
举报
文章被收录于专栏:崔哥的专栏崔哥的专栏

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装配置
  • 迁移脚本
  • 迁移脚本2(自动生成迁移)
  • 生成sql
  • 参考
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档