flask-migrate库的使用
在使用flask-SQLAlchemy库的时候,经常苦恼于该库的creat_all()方法不能对项目中的新建库进行修改,drop_all()又会对数据进行删除,这非常的不方便,万幸,Flask-SQLAlchemy的开发者同时开发了flask-migrate库,用于数据库的迁移。本文为windows环境。
安装
pip install flask-migrate
通过pip安装,就能完成。
使用方法
在进行迁移操作以前,我们需要现在程序中进行初始化操作:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_script import Manager
from flask_migrate import Migrate app = Flask(__name__)
... db = SQLAlchemy(app)
migrate = Migrate(app, db)
实例化Migrate类,除了要传入程序实例app,还需要传入实例化Flask-SQLAlchemy提供的SQLAlchemy类创建的db对象作为第二个参数。然后就可以开始数据库迁移操作了。
step1:创建迁移环境
flask db init
如果显示无该指令,可以使用:
python -m flask db init
通过这种方式,就可以在本地项目的根目录下创建一个migrations文件夹,该文件夹中包含了自动生成的配置文件和迁移脚本文件夹。ps:python -m是python中用来执行外部命令的方式,本文下面部分的内容如果出现相同情况,都可以通过添加该语句来解决。migrations文件夹如下所示:
step2:生成迁移脚本
使用migrate子命令可以自动生成迁移脚本
如果你在项目中添加了多个表,那么使用如下命令生成迁移脚本:
flask db migrate
执行这条命令以后,Alembic会检测出数据库及模型的变化,如下所示:
如果你只是单一的数据表发生字段的添加,那么你只需要这样:
flask db migrate -m "add 表名 字段名"
这种方式,可以实现对单一数据库表字段的添加操作,结果与上述方法类似,就不添加图片了。
step3:★更新数据库
这一步很关键,如果说,step2虽然检测到了数据库的变化,但是,并没有对原数据库进行任何改变,这还需要对数据库的更新操作,有点儿类似于项目中对数据库的增删改,可以保证数据库的一致性。
flask db upgrade
通过该指令,就可以实现数据库中未创建库和表的创建;如果已经创建了,则会在不损坏数据的前提下执行更新。结果如下所示:
以上就完成了对数据库迁移操作的简单介绍,非常的方便。
flask-migrate库的使用的更多相关文章
- pthon web框架flask(一)
pthon web框架优劣: 知乎上有一个讨论Python 有哪些好的 Web 框架?,从这个讨论中最后我选择了flask,原因是: Django,流行但是笨重,还麻烦,人生苦短,肯定不选 web.p ...
- Flask 学习笔记(二):RESTful API
概括 URL:需要操作的对象,也就是资源 HTTP method:我要对该对象做什么(POST 增.DELETE 删.GET 查.PUT 和 PATCH 改) HTTP status code:操作的 ...
- Flask框架函数
title: flask学习笔记 subtitle: 1. flask框架函数 date: 2018-12-14 10:17:28 --- Flask学习 学习Miguel Grinberg的2017 ...
- Python之Flask框架项目Demo入门
Python+Flask框架项目Demo入门 本例子用到了 Flask+蓝图+Flask-Login+SQLAlchemy+WTForms+PyMySQL相关架构 Flask Web框架介绍 Flas ...
- 从Flask-Script迁移到Flask-Cli
Abstrct flask从0.11版本开始引入了click提供命令行支持,在此之前我们通常会引入Flask-Script来提供. 在<Flask web开发>这本书编写时flask0.1 ...
- flask-admin章节三:数据库迁移工具 alembic初步使用
1. 概述 基于flask框架构建web,一般会使用sqlchemy(在flask中使用sqlchemy可以参考这里)作为数据库引擎. 这样业务的逻辑就可以做到不跟具体的数据库类型相耦合,具体后端业务 ...
- jQuery升级踩坑大全
jQuery升级踩坑大全 背景 jQuery想必各个web工程师都再熟悉不过了,不过现如今很多网站还采用了很古老的jQuery版本.其实如果早期版本使用不当,可能会有DOMXSS漏洞,非常建议升级到j ...
- jQuery版本升级踩坑大全
背景 -------------------------------------------------------------------------------- jQuery想必各个web工程师 ...
- jquery中Live方法不可用,Jquery中Live方法失效
jquery中Live方法不可用,Jquery中Live方法失效 >>>>>>>>>>>>>>>>> ...
- 编写高质量代码改善python程序91个建议学习01
编写高质量代码改善python程序91个建议学习 第一章 建议1:理解pythonic的相关概念 狭隘的理解:它是高级动态的脚本编程语言,拥有很多强大的库,是解释从上往下执行的 特点: 美胜丑,显胜隐 ...
随机推荐
- 苏宁笔试:UML类图中的关系
1. 依赖 2. 关联 3. 聚合 4. 组合 5. 泛化 6. 实现
- fullPage全屏高度自适应
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Date 类的使用
package com.Date.Math; import java.text.ParseException; import java.text.SimpleDateFormat; import ja ...
- ASP.NET中实现封装与策略模式
首先把运算方法封装起来,这样在网页界面中直接就可以调用了,不过是换张脸而已! using System; using System.Collections.Generic; using System. ...
- echart 插件实现全国地图
最近的项目要用到一个能展现全国地图的功能,并且全国各个省份显示的颜色不同,点击省份后会返回省份名称.经过反复的查找最终确定了echart这个插件,最后的成果还不错,在这里写下来希望对大家有所帮助.话不 ...
- 《TCP/IP 详解 卷1:协议》第 8 章:Internet 控制报文协议
路由器是 Internet 的重要组成部分,严密监视 Internet 的操作.IP 协议未给发送失败的 IP 数据包提供一种错误处理,也没有给端系统提供直接的方法来发现错误.为了解决这一不足之处,I ...
- 团队作业7——第二次项目冲刺(Beta版本12.07——12.08)
1.当天站立式会议照片 本次会议在5号公寓3楼召开,本次会议内容:①:熟悉每个人想做的模块.②:根据项目要求还没做的完成. 2.每个人的工作 经过会议讨论后确定了每个人的分工 组员 任务 陈福鹏 实现 ...
- mac上查找nginx安装位置
在终端输入: nginx -V 查看nginx版本及安装的本地位置 ngxin -v 查看nginx版本(此方法依然可以检测是否安装某一软件,如git,hg等)
- Mongodb 分片操作 介绍
为什么需要分片操作?由于数据量太大,使得CPU,内存,磁盘I/O等压力过大.当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量.这时,我们就可以通过在多台 ...
- Python入门:数据结构的3个小技巧
这是关于Python的第11篇文章,主要介绍下数据结构的3个小技巧. 排序: 使用sorted函数实现排序. sorted函数按照长短.大小.英文字母的顺序给每个列表的元素进行排序.这个函数经常在数据 ...