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设计模式之代理模式实例
Apr 26 Python
web.py在模板中输出美元符号的方法
Aug 26 Python
Python正则表达式匹配HTML页面编码
Apr 08 Python
python中getaddrinfo()基本用法实例分析
Jun 28 Python
python动态网页批量爬取
Feb 14 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
python3.7.0的安装步骤
Aug 27 Python
python定时按日期备份MySQL数据并压缩
Apr 19 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
python实现复制文件到指定目录
Oct 16 Python
Django基于客户端下载文件实现方法
Apr 21 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 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/09/23 PHP
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
jQuery select操作控制方法小结
2010/05/26 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
在python的类中动态添加属性与生成对象
2016/09/17 Python
python实现折半查找和归并排序算法
2017/04/14 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
Python yield与实现方法代码分析
2018/02/06 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
Python读取指定日期邮件的实例
2019/02/01 Python
python pandas时序处理相关功能详解
2019/07/03 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
Python控制台实现交互式环境执行
2020/06/09 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
CSS3 animation实现简易幻灯片轮播特效
2016/09/27 HTML / CSS
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
小小商店教学反思
2014/04/27 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
药品开票员岗位职责
2015/04/15 职场文书
实验心得体会范文
2016/01/25 职场文书