Flask 数据库迁移(详解)
1、使用 Flask-Migrate 实现数据库迁移
在开发过程中,随着需求的变化,有可能需要添加或修改表的一些字段,但是原表中的数据不能删除,此时就需要创建新表,并将旧表中的数据迁移至新表中,Flask-Migrate这个扩展就可以在不破坏数据的情况下更新数据库表的结构,并完成数据从旧表到新表的迁移。
2、Flask-Migrate的使用
可以使用pip install flask-migrate进行安装。在程序中,我们实例化 Flask_Migrate 提供的 Migrate 类,进行初始化操作。
mange.py
class Config:DEBUG = True# 数据库连接配置SQLALCHEMY_DATABASE_URI = 'mysql://root:123456@localhost:3306/demo1'SQLALCHEMY_TRACK_MODIFICATIONS = False
demo4.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from mange import Config
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommandapp = Flask(__name__)
app.config.from_object(Config)manager = Manager(app)db = SQLAlchemy(app)Migrate(app, db)manager.add_command('mysql', MigrateCommand)if __name__ == '__main__':manager.run()
实例化 Migrate 类,需要传入 Flask 实例 app 和 SQLAlchemy创建的实例 mysql
2.1 数据库的迁移过程
先定义一个模型类(User)
class User(db.Model):__tablename__ = 'user'id = db.Column(db.Integer, primary_key=True)user_name = db.Column(db.String)password = db.Column(db.String)
在 Pycharm自带的控制台输入命令
依次输入
1、python demo4.py mysql init
demo4.py是文件名
迁移环境只需创建一次,创建后会在项目根目录下生成一个 migrations 目录,其中包含了自动生成的配置文件和迁移版本目录。
2、python demo4.py mysql migrate -m “init”
-m 选项添加备注信息,执行后迁移版本目录生成了迁移脚本。 此备注信息必须添加
3、python demo4.py mysql upgrade
迁移脚本内有两个函数:
upgrade():把迁移中的改动应用到数据库中
downgrade():将改动撤销
2.1.3 更新数据库
如果之后我们需要改动 user 表中的字段,比如添加一个mobile字段,我们只需在 User 模型类中添加该属性,之后分别执行上方的 ② 号命令和 ③ 号命令即可
注意:
- 如果在迁徙数据时出现报错,请一定要把数据库清空,然后重新开始执行命令
- 此文件使用的是flask_script 包中的 Manager 来启动文件的。所以,想运行代码的话输入
python demo4.py runserver -h 0.0.0.0 -p 8000 -d
demo4.py是文件名
-h ip地址
-p 端口号
-d debug
- 当然如果你觉得上方的②号方法较麻烦,可以如下图配置,配置完后就可以正常的右键运行了:
Flask 数据库迁移(详解)相关推荐
- 简单分析Flask 数据库迁移详情
本文给大家分享的是 Flask 数据库迁移详情,db.create_all()不会重新创建表或是更新表,需要先使用db.drop_all()删除数据库中所有的表之后再调用db.create_all() ...
- JetBrains DataGrip工具配置数据库过程详解
JetBrains DataGrip工具配置数据库过程详解 DataGrip是一款数据库管理客户端工具,方便连接到数据库服务器,执行sql.创建表.创建索引以及导出数据等. DataGrip 是 Je ...
- SAE上传web应用(包括使用数据库)教程详解及问题解惑
2019独角兽企业重金招聘Python工程师标准>>> 转自:http://blog.csdn.net/baiyuliang2013/article/details/24725995 ...
- 前沿分享|阿里云数据库高级技术专家 宋利兵:阿里云企业级自治数据库RDS详解
简介:本篇内容为2021云栖大会-企业级云原生数据库最佳实践论坛中,阿里云数据库高级技术专家 宋利兵关于"阿里云企业级自治数据库RDS详解"的分享. 本文将从2方面为大家介绍企业级 ...
- python接入excel_使用python将excel数据导入数据库过程详解
因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接丢代码,使用python3,注释比较清楚. ...
- java 李刚 pdf_Java数据库技术详解(李刚) PDF_源雷技术空间
资源名称:Java数据库技术详解(李刚) PDF 第一篇 数据库基础篇 第1章 Java和数据库 2 1.1 Java概述 2 1.1.1 跨平台性 2 1.1.2 面向对象 2 1.1.3 安全性 ...
- Neural Style Transfer 神经风格迁移详解
Neural Style Transfer 神经风格迁移详解 今天和大家分享一个比较有意思的东西,Neural Style Transfer,神经风格迁移,简单说就是我们将一张普通的照片赋予它艺术作品 ...
- mysql 热迁移,proxmox迁移详解
转载来自51cto:https://blog.51cto.com/15082392/2656486 proxmox迁移详解 骚年 运维少年 proxmox 迁移详解 一.迁移概述 迁移,顾名思义,即将 ...
- 如何查看mysql数据库的引擎/MySQL数据库引擎详解
一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看: 看你的mysql现在已提供什么存储引擎: mysql> show engines; 看你的mysql当前默认的存储引擎: m ...
- silverlight mysql_Silverlight中衔接MySQL数据库实例详解
Silverlight中衔接MySQL数据库实例详解 日期:2010年5月25日 作者: 本文将重点讲述Silverlight中衔接MySQL数据库实例,这在RIA开发中比拟根底,但是也是比拟首要的内 ...
最新文章
- 在线作图|2分钟画一张堆叠面积图
- 从“执行新过程新增5%的工作量”看新过程引入
- java广度优先遍历
- Ubuntu服务器运行js,让js一直运行下去
- 如何在构建docker镜像时执行SonarQube扫描.NET Core应用
- linux accept过程,Linux协议栈accept和syn队列问题
- Debian卸载iceweasel
- 网管师职业规划(3)
- 【分享】豆瓣上排名top100的书籍
- 性能优化大牛 Brendan Gregg 的新书要来了
- 图基(Tukey)检验
- 关于支付接口回调地址参数字段是“notify_url”,签名过后的特殊字符url编码以后再解码后出现错误(¬ , ¢, ¤, £)
- 仿QQ空间登录,解决键盘挡住输入框的问题
- igraph入门教程
- 图像三维重建方法综述
- hp服务器通过ilo5安装系统,HPE ProLiant Gen10 通过iLO 5(v1.15) web界面多种方式更新服务器固件,包含升级系统恢复集方法...
- 对联盟链的零星想法,欢迎指正交流
- Oracle Instance and Database
- EXCEL VBA 使用正则表达式清洗替换数据
- 如何编写高质量的Java代码
热门文章
- ASPUPload3.0注册机
- powerDesign导出数据库表结构
- 介绍一个Office画图工具--visio
- 基于ASP.NET的网络购物系统设计与实现
- 淘宝违规考试软件第一课
- java 酒店系统_Java实现酒店客房管理系统
- 初学者福利:分享五个免费的 Python 学习网站,抓紧收藏吧
- 计算机任务栏的透明颜色设置,详细教您让Win10任务栏全透明_一分钟让Win10任务栏全透明...
- 使用outlook邮件服务器,使用OUTLOOK配置邮件服务
- Kudu Partition Tablet Bucket