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 模型类中添加该属性,之后分别执行上方的 ② 号命令和 ③ 号命令即可

注意:

  1. 如果在迁徙数据时出现报错,请一定要把数据库清空,然后重新开始执行命令
  2. 此文件使用的是flask_script 包中的 Manager 来启动文件的。所以,想运行代码的话输入
python demo4.py runserver -h 0.0.0.0 -p 8000 -d

demo4.py是文件名

-h ip地址
-p 端口号
-d debug

  1. 当然如果你觉得上方的②号方法较麻烦,可以如下图配置,配置完后就可以正常的右键运行了:

Flask 数据库迁移(详解)相关推荐

  1. 简单分析Flask 数据库迁移详情

    本文给大家分享的是 Flask 数据库迁移详情,db.create_all()不会重新创建表或是更新表,需要先使用db.drop_all()删除数据库中所有的表之后再调用db.create_all() ...

  2. JetBrains DataGrip工具配置数据库过程详解

    JetBrains DataGrip工具配置数据库过程详解 DataGrip是一款数据库管理客户端工具,方便连接到数据库服务器,执行sql.创建表.创建索引以及导出数据等. DataGrip 是 Je ...

  3. SAE上传web应用(包括使用数据库)教程详解及问题解惑

    2019独角兽企业重金招聘Python工程师标准>>> 转自:http://blog.csdn.net/baiyuliang2013/article/details/24725995 ...

  4. 前沿分享|阿里云数据库高级技术专家 宋利兵:阿里云企业级自治数据库RDS详解

    简介:本篇内容为2021云栖大会-企业级云原生数据库最佳实践论坛中,阿里云数据库高级技术专家 宋利兵关于"阿里云企业级自治数据库RDS详解"的分享. 本文将从2方面为大家介绍企业级 ...

  5. python接入excel_使用python将excel数据导入数据库过程详解

    因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接丢代码,使用python3,注释比较清楚. ...

  6. java 李刚 pdf_Java数据库技术详解(李刚) PDF_源雷技术空间

    资源名称:Java数据库技术详解(李刚) PDF 第一篇 数据库基础篇 第1章 Java和数据库 2 1.1 Java概述 2 1.1.1 跨平台性 2 1.1.2 面向对象 2 1.1.3 安全性 ...

  7. Neural Style Transfer 神经风格迁移详解

    Neural Style Transfer 神经风格迁移详解 今天和大家分享一个比较有意思的东西,Neural Style Transfer,神经风格迁移,简单说就是我们将一张普通的照片赋予它艺术作品 ...

  8. mysql 热迁移,proxmox迁移详解

    转载来自51cto:https://blog.51cto.com/15082392/2656486 proxmox迁移详解 骚年 运维少年 proxmox 迁移详解 一.迁移概述 迁移,顾名思义,即将 ...

  9. 如何查看mysql数据库的引擎/MySQL数据库引擎详解

    一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看: 看你的mysql现在已提供什么存储引擎: mysql> show engines; 看你的mysql当前默认的存储引擎: m ...

  10. silverlight mysql_Silverlight中衔接MySQL数据库实例详解

    Silverlight中衔接MySQL数据库实例详解 日期:2010年5月25日 作者: 本文将重点讲述Silverlight中衔接MySQL数据库实例,这在RIA开发中比拟根底,但是也是比拟首要的内 ...

最新文章

  1. 在线作图|2分钟画一张堆叠面积图
  2. 从“执行新过程新增5%的工作量”看新过程引入
  3. java广度优先遍历
  4. Ubuntu服务器运行js,让js一直运行下去
  5. 如何在构建docker镜像时执行SonarQube扫描.NET Core应用
  6. linux accept过程,Linux协议栈accept和syn队列问题
  7. Debian卸载iceweasel
  8. 网管师职业规划(3)
  9. 【分享】豆瓣上排名top100的书籍
  10. 性能优化大牛 Brendan Gregg 的新书要来了
  11. 图基(Tukey)检验
  12. 关于支付接口回调地址参数字段是“notify_url”,签名过后的特殊字符url编码以后再解码后出现错误(¬ , ¢, ¤, £)
  13. 仿QQ空间登录,解决键盘挡住输入框的问题
  14. igraph入门教程
  15. 图像三维重建方法综述
  16. hp服务器通过ilo5安装系统,HPE ProLiant Gen10 通过iLO 5(v1.15) web界面多种方式更新服务器固件,包含升级系统恢复集方法...
  17. 对联盟链的零星想法,欢迎指正交流
  18. Oracle Instance and Database
  19. EXCEL VBA 使用正则表达式清洗替换数据
  20. 如何编写高质量的Java代码

热门文章

  1. ASPUPload3.0注册机
  2. powerDesign导出数据库表结构
  3. 介绍一个Office画图工具--visio
  4. 基于ASP.NET的网络购物系统设计与实现
  5. 淘宝违规考试软件第一课
  6. java 酒店系统_Java实现酒店客房管理系统
  7. 初学者福利:分享五个免费的 Python 学习网站,抓紧收藏吧
  8. 计算机任务栏的透明颜色设置,详细教您让Win10任务栏全透明_一分钟让Win10任务栏全透明...
  9. 使用outlook邮件服务器,使用OUTLOOK配置邮件服务
  10. Kudu Partition Tablet Bucket