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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 拿走不谢

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