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时区设置方法与pytz查询时区教程
Nov 27 Python
python实现的二叉树算法和kmp算法实例
Apr 25 Python
python爬虫入门教程之点点美女图片爬虫代码分享
Sep 02 Python
Python中模拟enum枚举类型的5种方法分享
Nov 22 Python
深入探究Python中变量的拷贝和作用域问题
May 05 Python
python学习之面向对象【入门初级篇】
Jan 21 Python
python logging日志模块的详解
Oct 29 Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 Python
python调用动态链接库的基本过程详解
Jun 19 Python
Python获取、格式化当前时间日期的方法
Feb 10 Python
Python环境配置实现pip加速过程解析
Nov 27 Python
Python爬虫进阶之爬取某视频并下载的实现
Dec 08 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
德生BCL3000的电路分析和打磨
2021/03/02 无线电
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
js里的prototype使用示例
2010/11/19 Javascript
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
JS中表单的使用小结
2014/01/11 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
jQuery EasyUI datagrid实现本地分页的方法
2015/02/13 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
python数据分析:关键字提取方式
2020/02/24 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
设计毕业生简历中的自我评价
2013/10/01 职场文书
八年级音乐教学反思
2014/01/09 职场文书
运动会口号8字
2014/06/07 职场文书
小学生自我评价100字(15篇)
2014/09/18 职场文书
北京故宫的导游词
2015/01/31 职场文书
新人入职感言
2015/07/31 职场文书
vue自定义右键菜单之全局实现
2022/04/09 Vue.js