惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
Arctic Wolf
T
Tenable Blog
T
Troy Hunt's Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Privacy & Cybersecurity Law Blog
NISL@THU
NISL@THU
Application and Cybersecurity Blog
Application and Cybersecurity Blog
H
Hacker News: Front Page
S
Secure Thoughts
AWS News Blog
AWS News Blog
L
LINUX DO - 最新话题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
M
MIT News - Artificial intelligence
T
Tor Project blog
S
Schneier on Security
PCI Perspectives
PCI Perspectives
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
美团技术团队
Google DeepMind News
Google DeepMind News
V
Visual Studio Blog
爱范儿
爱范儿
Google DeepMind News
Google DeepMind News
Cyberwarzone
Cyberwarzone
T
The Exploit Database - CXSecurity.com
罗磊的独立博客
T
Threat Research - Cisco Blogs
Recent Commits to openclaw:main
Recent Commits to openclaw:main
V
V2EX
C
CXSECURITY Database RSS Feed - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
G
GRAHAM CLULEY
L
LINUX DO - 热门话题
D
Docker
J
Java Code Geeks
GbyAI
GbyAI
H
Heimdal Security Blog
The Hacker News
The Hacker News
MongoDB | Blog
MongoDB | Blog
V
Vulnerabilities – Threatpost
T
Tailwind CSS Blog
Cloudbric
Cloudbric
TaoSecurity Blog
TaoSecurity Blog
C
CERT Recently Published Vulnerability Notes
Y
Y Combinator Blog
Recorded Future
Recorded Future
Cisco Talos Blog
Cisco Talos Blog
T
Threatpost
The Register - Security
The Register - Security
Hacker News - Newest:
Hacker News - Newest: "LLM"

博客园 - 拿走不谢

20190131 经验总结:如何从rst文件编译出自己的sqlalchemy的文档 20180821 Python学习笔记:如何获取当前程序路径 网络编程之 keepalive(zz) java socket编程中backlog的含义(zz) 20170814 新鲜:EChart新增了日历图,要想办法用起来 Canvas 和 SVG 的不同 androidstudio全局搜索快捷键Ctrl+Shift+F失效的解决办法 Android support 26.0.0-alpha1 产生的问题(zz) 20170711 通过阿里云与国家气象局合作的api读取历史辐照数据 Android、iOS、和Web如何做灰度发布? 周鸿祎《智能主义》读书笔记 《Python数据分析与挖掘实战》读书笔记 《腾讯传》读书笔记 《如何高效学习》读书笔记 版本控制:tortoise svn的 revert to this revision和 revert changes from this revision有什么区别? android:第十章,后台的默默劳动者——服务,学习笔记 Android: Android Studio签名打包的两种方式(zz) Android:如何生成自己的keystore(zz) android:Android中用文件初始化sqlite数据库(zz)
Python学习笔记:Flask-Migrate基于model做upgrade的基本原理
拿走不谢 · 2018-08-29 · via 博客园 - 拿走不谢

2)获取帮助,在pycharm的控制台中输入 flask db  --help,或者flask db migrate  --help,这样就可以了解各个命令的信息了

3)一般用法,

    >flask db init

    >flask db migrate

    >flask db upgrade

    后续对脚本有任何的修改,只要重复执行后两句就可以了。

4)测试1:添加一行数据,删除email列,然后再加上

    针对下面这个表:

    a)先通过以上3个命令创建表;

    b)然后再数据库中插入一条数据;

    c)然后从models中把email列删除,执行migrate ,updrade,此时发现,数据还在,只是列删除了;

    d)然后恢复email列,执行migrate,upgrade,此时发现,数据还在,增加了一个email的空列;

    仔细观察日志,发现这个upgrade执行的是升级,而不是重新创建

其中04a26df9c6d3_.py的内容为:

04f13e3c2f7e_.py 的内容为

5)测试2:把user表删除

    a)如果只执行flask db upgrade,则什么都不执行

    b)执行flask db migrate,然后再执行flask db upgrade,则可以重新创建表

    通过migrate,程序会先比较本地的model和数据库中实际的表,然后创建如下脚本 69f5e753ee6c_.py

6)结论

    对模型的任何修改,都要再执行flask db migrate, flask db upgrade

    这里做的任何的更新,实际上都是把模型和数据库当前的状态做比较的

    而且历次的版本都有,所以实际上可以回退到之前的任何一个版本。

    这个思路其实挺好,这就是我们之前写数据库补丁脚本的思路,一环套一环,只不过之前是靠人的,现在是靠程序自动生成的。

    而且他这里更好的地方是,不但支持upgrade,还支持downgrade