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 17 Python
python数据结构之图深度优先和广度优先实例详解
Jul 08 Python
Python连接DB2数据库
Aug 27 Python
Python中对数组集进行按行打乱shuffle的方法
Nov 08 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 Python
Python爬虫学习之获取指定网页源码
Jul 30 Python
Python turtle绘画象棋棋盘
Aug 21 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
Python drop方法删除列之inplace参数实例
Jun 27 Python
opencv检测动态物体的实现
Jul 21 Python
进行数据处理的6个 Python 代码块分享
Apr 06 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
Jun 21 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中使用反射技术的架构插件使用说明
2010/05/18 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
学习jquery之一
2007/04/27 Javascript
JavaScript中的History历史对象
2008/01/16 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
python中日志logging模块的性能及多进程详解
2017/07/18 Python
python使用tornado实现登录和登出
2018/07/28 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
小学教师培训感言
2014/02/11 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
小学庆六一活动总结
2014/08/28 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
入党后的感想
2015/08/10 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
创业计划书之闲置物品置换中心
2019/12/25 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers