Flask数据库迁移简单介绍


Posted in Python onOctober 24, 2017

前言

用过Django的小伙伴都知道,Django的ORM是自带的,比较特殊,而且集成了很多功能,比如数据库迁移…
何为ORM,个人之见解,简化sql语句的书写,将关系型数据库的一张张表转化为了python的类,最大的好处是简化了学习成本,不会sql语句的程序员也能平滑的使用数据库,并且天生防sql注入。flask可以使用SQLAlchemy,包名为flask-sqlalchemy.至于具体用法翻译的官方文档讲的也足够清楚。大家直接谷歌跟着文档就能搞定,本篇主要讲如何进行数据库迁移。

flask的小工具

大家从Django转至Flask最明显的一个差异就是,flask直接运行就可以启动服务,Django是使用了runserver来进行运行。至于好坏大家自行斟酌。这里提一个插件。flask-script。pip安装即可。

from flask_script import Manager
......
manager = Manager(app)
......
#app.run() #注释这句
manager.run()

这样,启动的方式变为 python main.py runserver

这似乎有点画蛇添足,实则不然,这和我们下面要讲的数据库迁移有很大的联系。

数据库迁移

需要用的的插件 flask-migrate
安装之

main.py

from flask import Flask
from flask_script import Manager
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate,MigrateCommand

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////opt/db.sqlite' #使用sqlite3数据库
db = SQLAlchemy(app) #ORM

migrate = Migrate(app,db)
manager = Manager(app)
manager.add_comman('db',MigrateCommand) #添加db 命令(runserver的用法)

#一个用户表
class User(db.Model):
...
...
省略

if __name__ == '__main__':
 manager.run()

这样,准备工作已经就绪。
运行python main.py db init创建数据表。并且会在你项目下生成migrations/目录,保存你数据库每次变更的内容。

修改User类。

python main.py db migrate 提交修改
python main.py db upgrade 执行修改

再看User表,已经改变。

python main.py db downgrade 回退修改

有一点注意的:SQLite3不能删除有值的列…所以,大家就不要删除列了…

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
python黑魔法之参数传递
Feb 12 Python
Ubuntu 下 vim 搭建python 环境 配置
Jun 12 Python
详解python里使用正则表达式的全匹配功能
Oct 19 Python
如何利用python查找电脑文件
Apr 27 Python
python_opencv用线段画封闭矩形的实例
Dec 05 Python
Python如何获得百度统计API的数据并发送邮件示例代码
Jan 27 Python
python 装饰器功能与用法案例详解
Mar 06 Python
如何提高python 中for循环的效率
Apr 15 Python
一文读懂Python 枚举
Aug 25 Python
python实现人工蜂群算法
Sep 18 Python
scrapy实践之翻页爬取的实现
Jan 05 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 #Python
Scrapy的简单使用教程
Oct 24 #Python
详解python里使用正则表达式的分组命名方式
Oct 24 #Python
在python中使用正则表达式查找可嵌套字符串组
Oct 24 #Python
python爬虫之BeautifulSoup 使用select方法详解
Oct 23 #Python
浅谈python中copy和deepcopy中的区别
Oct 23 #Python
python的构建工具setup.py的方法使用示例
Oct 23 #Python
You might like
ThinkPHP缓存方法S()概述
2014/06/13 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
jQuery+CSS3实现树叶飘落特效
2015/02/01 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
2015/08/28 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
记一次vue跨域的解决
2020/10/21 Javascript
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
python二叉树的实现实例
2013/11/21 Python
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
个人能力自我鉴赏
2014/01/25 职场文书
煤矿安全协议书
2014/08/20 职场文书
大学同学会活动方案
2014/08/20 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书