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文件操作之目录遍历实例分析
May 20 Python
Python栈类实例分析
Jun 15 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
Python 调用Java实例详解
Jun 02 Python
python之super的使用小结
Aug 13 Python
python多线程高级锁condition简单用法示例
Nov 07 Python
如何基于python操作json文件获取内容
Dec 24 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
Python Tkinter Entry和Text的添加与使用详解
Mar 04 Python
Django 返回json数据的实现示例
Mar 05 Python
Python新手学习装饰器
Jun 04 Python
Python可视化工具如何实现动态图表
Oct 23 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
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
jQuery插件Echarts实现的渐变色柱状图
2017/03/23 jQuery
vue.js 获取当前自定义属性值
2017/06/01 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
python递归计算N!的方法
2015/05/05 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
python判断字符串或者集合是否为空的实例
2019/01/23 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
python爬虫 正则表达式解析
2019/09/28 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
实习教师自我鉴定
2013/12/12 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
软弱涣散基层党组织整改方案
2014/10/25 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
jquery插件实现代码雨特效
2021/04/24 jQuery