博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
7.ORM与SQLAlchemy (3) - flask-migrate数据库迁移
阅读量:5903 次
发布时间:2019-06-19

本文共 1143 字,大约阅读时间需要 3 分钟。

在上一遍文章中,我们增加了两个模型QuestionsComments,并为Users增加了avatar_path这个字段,然后通过这段代码更新到数据库:

with app.test_request_context():    db.drop_all()    db.create_all()

因为当使用过db.create_all()之后,再次直接使用db.create_all(),对模型的修改并不会更新到数据库,我们要使用db.drop_all()先把数据库中所有的表先删除掉,然后再db.create_all()一次。听上去是不是很麻烦?更糟糕的是,原先数据库的的数据也就没有了。所以我们不用这种简单粗暴的方式去更新数据库结构,而是借助flask-migrate这个专门用于迁移数据库的工具,它可以在保留数据库原始数据的情况下,完成模型的更新。此外,我们还将结合flask-script一起使用,简单来说flask-script让我们可以使用命令行去完成数据库迁移的操作。


在项目主文件夹下新建一个manage.py,代码如下:

from flask_script import Managerfrom flask_migrate import Migrate, MigrateCommandfrom HarpQA import app, dbfrom models import Users, Questions, Commentsmanager = Manager(app)migrate = Migrate(app, db)manager.add_command('db', MigrateCommand)if __name__ == '__main__':    manager.run()

首先导入相关的类,注意模型要全部导入过来,即使代码中并没有显式地使用它们。然后传入appdb来构建ManagerMigrate两个类的实例,最后将MigrateCommand的命令加入到manager中。


此时我们假设要更新模型的结构,在models.pyUser模型结尾添加一行代码test = db.Column(db.Integer),然后点击PyCharm下方的Terminal,自动进入到了虚拟环境的命令行中,输入python manage.py db init来初始化,这一步主要是建立数据库迁移相关的文件和文件夹,只是在第一次需要使用。接着依次使用python manage.py db migratepython manage.py db upgrade,待运行完成,查看users_infor表的结构,结果如下:

clipboard.png

可以看到test字段已经添加到表中了。

转载地址:http://syupx.baihongyu.com/

你可能感兴趣的文章
乐在其中设计模式(C#) - 单例模式(Singleton Pattern)
查看>>
AssetBundle进阶内存优化(Unity 4.x)
查看>>
Windows Home Server 简体中文版安装和配置体验 - 海量图鉴
查看>>
Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)
查看>>
Windows 8部署系列PART3:配置WDS服务器环境
查看>>
Ruby中写一个判断成绩分类的脚本
查看>>
《从零开始学Swift》学习笔记(Day 40)——析构函数
查看>>
Exchange2003-2010迁移系列之十,Exchange证书攻略
查看>>
extmail集群的邮件负载均衡方案 [lvs dns postfix]
查看>>
SCCM2012SP1---资产管理和远程管理
查看>>
org.springframework.util 类 Assert的使用
查看>>
更改UIView的背景
查看>>
JLNotebookView
查看>>
StackPanel
查看>>
SPUserResizableView
查看>>
UML类图示例
查看>>
sh ./ 执行区别
查看>>
宏定义(#ifndef+#define+#endif)的作用
查看>>
Prometheus安装部署以及配置
查看>>
Oracle存储过程大冒险-2存储过程常用语法
查看>>