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 相关文章推荐
py2exe 编译ico图标的代码
Mar 08 Python
深入解析Python编程中super关键字的用法
Jun 24 Python
使用Python读取安卓手机的屏幕分辨率方法
Mar 31 Python
Python从使用线程到使用async/await的深入讲解
Sep 16 Python
老生常谈python中的重载
Nov 11 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
Dec 02 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
django最快程序开发流程详解
Jul 19 Python
python读写Excel表格的实例代码(简单实用)
Dec 19 Python
Python 项目转化为so文件实例
Dec 23 Python
Django之腾讯云短信的实现
Jun 12 Python
Python安装并操作redis实现流程详解
Oct 13 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学习之数据类型之间的转换介绍
2011/06/09 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
JavaScript中this详解
2015/09/01 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
mui js控制开关状态、修改switch开关的值方法
2019/09/03 Javascript
python设置检查点简单实现代码
2014/07/01 Python
python对字典进行排序实例
2014/09/25 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
django项目登录中使用图片验证码的实现方法
2019/08/15 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
解决python运行启动报错问题
2020/06/01 Python
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
C语言面试题
2015/10/30 面试题
初中校园之声广播稿
2014/01/15 职场文书
精彩自我鉴定
2014/01/16 职场文书
两只小狮子教学反思
2014/02/05 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
校长一岗双责责任书
2015/05/09 职场文书
投诉书格式范本
2015/07/02 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
如何解决php-fpm启动不了问题
2021/11/17 PHP
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python