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 使用get_argument获取url query参数
Apr 28 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
Jun 11 Python
opencv python统计及绘制直方图的方法
Jan 21 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
May 16 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 Python
通过字符串导入 Python 模块的方法详解
Oct 27 Python
Python Django框架模板渲染功能示例
Nov 08 Python
通过代码实例了解Python sys模块
Sep 14 Python
Python request中文乱码问题解决方案
Sep 17 Python
python中os.remove()用法及注意事项
Jan 31 Python
Python爬虫数据的分类及json数据使用小结
Mar 29 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/06/27 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
JavaScript调试之console.log调试的一个小技巧分享
2017/08/07 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
快速处理vue渲染前的显示问题
2018/03/05 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
在Django的模型中添加自定义方法的示例
2015/07/21 Python
python追加元素到列表的方法
2015/07/28 Python
Python分治法定义与应用实例详解
2017/07/28 Python
Python从使用线程到使用async/await的深入讲解
2018/09/16 Python
python dict 相同key 合并value的实例
2019/01/21 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
如何通过python实现人脸识别验证
2020/01/17 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
辞旧迎新演讲稿
2014/09/15 职场文书
学习雷锋精神倡议书
2015/04/27 职场文书
离婚起诉书范本
2015/05/18 职场文书
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
python turtle绘图命令及案例
2021/11/23 Python
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸