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中unittest模块做UT(单元测试)使用实例
Jun 12 Python
Python的Django框架安装全攻略
Jul 15 Python
Python Web框架Tornado运行和部署
Oct 19 Python
python虚拟环境virualenv的安装与使用
Dec 18 Python
Python 将RGB图像转换为Pytho灰度图像的实例
Nov 14 Python
pip安装时ReadTimeoutError的解决方法
Jun 12 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
详解用Python练习画个美队盾牌
Mar 23 Python
使用python将多个excel文件合并到同一个文件的方法
Jul 09 Python
Python实现队列的方法示例小结【数组,链表】
Feb 22 Python
基于python 取余问题(%)详解
Jun 03 Python
Python bisect模块原理及常见实例
Jun 17 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的优点与缺点
2013/04/11 PHP
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
php中yii框架实例用法
2020/12/22 PHP
浅析JS刷新框架中的其他页面 && JS刷新窗口方法汇总
2013/07/08 Javascript
深入剖析JavaScript中的枚举功能
2014/03/06 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
Vue使用localStorage存储数据的方法
2019/05/27 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
Django自定义认证方式用法示例
2017/06/23 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
JNI的定义
2012/11/25 面试题
西部世纪.net笔试题面试题
2014/04/03 面试题
大学生英语演讲稿
2014/04/24 职场文书
十八大演讲稿
2014/05/22 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
人口与计划生育责任书
2015/05/09 职场文书
详解Django的MVT设计模式
2021/04/29 Python
使用numpy nonzero 找出非0元素
2021/05/14 Python
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
理解python中装饰器的作用
2021/07/21 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript