实现生产级的Migrate操作
风爻

前言
在涉及到关系型数据库开发时、我们每次在线上操作数据库都需要找一个叫 DBA 的角色,时光荏苒,就这样过了一年又一年。一群不堪压迫,集 颜值 、智商、动手能力于一身的程序员们发现,明明我们手里有操纵 DB 的能力,为什么要把命运交给别人主宰呢?
这群程序员做了一个伟大的决定!

让数据库的数据结构也能够通过版本追踪,这种操作,就被称为“Database Migrate”。本文将以 Flask-Migrate 作为基础蓝本,讲解如何实现生产级质量的 Migrate。
其实 Migrate 实现并不复杂,只要我们:
支持追踪每一次的数据库结构变更 【构建 commit】
新开发者参与到项目中可以自动的应用变更到最新版本 【生效 commit】
回滚更新 【revert】
一个基础完备且健壮的 Migrate 就算实现了。常见的 Migrate 实现都是直接使用当前数据库来进行构建的。Flask-Migrate 也不例外。
在 Flask-Migrate 中,构建 commit 是通过文件的方式生成的。以一个简单的项目为例:

而生效的 commit,存储在 DB 的 alembic_version 中:


在本例中,当前的 migrate 有两个,但是只生效了一个。当我们再次执行 Migrate 操作时,系统会对比当前目录和数据库中的记录,根据依赖关系顺序生效还未生效的 commit。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论