flask 数据库迁移migration
迁移
封装随着时间的推移对我们的数据库模式所做的一组更改。
被唯一命名
通常作为 本地文件 存储 在我们的项目仓库中,例如
migrations/
文件夹对我们的数据库所做的更改与 migrations/ 文件夹中存在的迁移文件之间应该存在 1-1 映射。
迁移文件为数据库设置了表。
对数据库所做的所有更改都应该作为我们存储库中迁移文件的一部分物理存在。
迁移命令行脚本
一般需要3个脚本,对于
- migrate :创建迁移脚本模板填写;根据要进行的更改生成迁移文件
- upgrade :应用尚未应用的迁移(“升级”我们的数据库)
- rollback :回滚有问题的应用迁移(“降级”我们的数据库)
Flask + SQLAlchemy 的迁移库
- Flask-Migrate 是我们使用 SQLAlchemy 迁移更改的库。 它在引擎下使用了一个名为 Alembic 的库。
Flask-Migrate & Flask-脚本
Flask-Migrate :迁移管理器,用于迁移基于 SQLALchemy 的数据库更改
Flask-Script :从终端运行我们定义的迁移脚本
进行迁移的步骤
- 初始化用于存储迁移的迁移存储库结构
- 创建迁移脚本(使用 Flask-Migrate)
- (手动)运行迁移脚本(使用 Flask-Script)
资源
- Flask-Migrate 官方文档
迁移migration步骤:
- from flask_migrate import Migrate
- migrate = Migrate(app,db)
- 保存之后终端运行命令:flask db init 生成migration文件夹
- 去掉create_all()语句
- 修改数据库/数据表
- 运行命令行:flask db migrate
- 之后 自动在migration/version文件夹下生成哈希码为名字的文件
- 打开看看,选择合适的版本, flask db upgrade 或 flask db downgrade
总结
设置和运行迁移的总体步骤
- 数据库迁移命令 :migrate = Migrate(app,db),链接到 Flask 应用程序模型和数据库,链接到用于运行迁移的命令行脚本,设置文件夹以存储迁移(作为数据库的版本)
- 运行初始迁移为 SQLAlchemy 模型创建表 ,记录初始模式:flask db init ,替换使用 db.create_all()
- 迁移对我们的数据模型的更改
- 更改 SQLAlchemy 模型
- 运行 flask db migrate 以允许 Flask-Migrate 根据更改自动生成迁移脚本
- 微调迁移脚本:migration/version文件夹下生成哈希码为名字的脚本
- 运行迁移,也就是通过“upgrade”“downgrade”改变数据库
帮助文档
- Welcome to Alembic’s documentation! — Alembic 1.8.1 documentation
- Flask-Migrate — Flask-Migrate documentation
flask 数据库迁移migration相关推荐
- 简单分析Flask 数据库迁移详情
本文给大家分享的是 Flask 数据库迁移详情,db.create_all()不会重新创建表或是更新表,需要先使用db.drop_all()删除数据库中所有的表之后再调用db.create_all() ...
- flask数据库迁移理解及命令
前言: 使用数据库迁移,可以直接建表,而不用我们自己写sql语句用来建表.就是将关系型数据库的一张张表转化成了Python的一个个类. 在开发中经常会遇到需要修改原来的数据库模型,修改之后更新数据库, ...
- Django 数据库 迁移migration “No changes detected“
目录 "No changes detected"问题 django.db.utils.OperationalError: (1050, "Table already ex ...
- flask数据库迁移
定义模型类 # coding:utf-8from flask import Flask, render_template, request, jsonify, redirect, url_forfro ...
- migration mysql_MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例...
dotnet core 2.0 发布已经好几天了,期间也把原来 dotnet core 1.1 的 MVC 项目升级到了 2.0,升级过程还是比较顺利的,变动也不是太多.升级的过程中也少不了 Enti ...
- 【Python】Flask框架系列(四):Flask-Migrate数据库迁移
参考:flask数据库迁移理解及命令 Flask-Migrate 使用数据库迁移,可以直接建表,而不用我们自己写sql语句用来建表.就是将关系型数据库的一张张表转化成了Python的一个个类. 在开发 ...
- python数据库迁移命令_创建和进行数据库迁移,同步数据库
模型(model)建好后,django可以根据这个模型(model)在数据库中创建一张数据表格. Django自带一个数据库迁移(migration)系统来跟踪对模型(models)的修改,然后同步到 ...
- django数据库迁移需注意的问题
django迁移 django迁移就是在django的models.py中创建数据库表,有django自己规定的数据库操作语法. 直接使用SQL非常麻烦,Django附带了一个对象关系映射器,简称OR ...
- Web框架——Flask系列之数据库迁移(二十)
一.Flask-Migrate扩展 在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库.最直接的方式就是删除旧表,但这样会丢失数据. 更好的解决办法是使用数据库迁移框架,它可以追踪数据库模 ...
- flask中数据库迁移
数据库迁移 在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库.最直接的方式就是删除旧表,但这样会丢失数据. 更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把变动应用 ...
最新文章
- 使用VB.NET加快代码开发速度
- 动手推导Self-Attention
- 安装apr和tomcat-native优化tomcat
- 【数据结构与算法】之深入解析“最长公共前缀”的求解思路与算法示例
- openssl 测试加密卡_OpenSSL自带的aes_128_ecb加密函数——密文长度测试
- crc16的c语言函数 计算ccitt_C语言为何如此重要
- java绘制图形_Java绘制图形
- CRF++中的unigram和bigram features指定是uni/bigrams的输出标签
- 编写一个关于浏览器盒子模型的方法
- Linux 压缩和解压
- 算法动画图解(安卓)、排序算法的可视化
- 神州数码交换机CS6200命令(信息安全管理与评估赛项)
- 【装机首选】惠普笔记本台式机专用系统 GHOSTXPSP3 v2013.06 海驱版
- 如何在PDF文件中插入文本或图片?
- lvds输入悬空_低压差分信号LVDS学习笔记-模拟/电源-与非网
- 三角形面积计算器--C语言
- 用python绘制熊猫图案_在python中绘制熊猫系列的CDF
- win10重装系统修改信息
- 自动切换输入法 mac版能让你在不同的应用之间自动的切换输入法
- 【c++基础】第五章 RALL机制与智能指针
热门文章
- java 权限 部分截图
- uniapp截取部分区域
- python显示日历_Python 程序显示日历
- Mysql 刷题笔记 0104 求出NAME中每组累加/每组总数的比例大于0.6的ID和NAME
- 【笔记本Windows的两个ctrl键失效解决办法大全解】
- 【摘抄】每一位测试必备保健技能
- QT 析构的报错Cannot send events to objects owned by a different thread.
- 如此沙雕的代码注释,原来程序员都是段子手
- android 记事本上功能,安卓手机上有多功能记事本app吗?
- ADXL345 三轴加速度角度传感器