【Flask 连接数据库,使用Flask-Migrate实现数据库迁移及问题汇总】

Flask 连接数据库,使用Flask-Migrate实现数据库迁移

安装Flask-Migrate插件
pip listall Flask-Migrate# 安装失败使用以下方式安装
pip install –i https://pypi.tuna.tsinghua.edu.cn/simple flask-migrate
使用Flask-Migrate步骤

app.py主要用于数据库连接

from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)
# 连接数据库
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@127.0.0.1:3306/flask_test'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)@app.route('/')
def index():return "Hello!"if __name__ == '__main__':app.run()

model.py 中导入了db,作用是存储一个User类,用于生成表头。

# _*_ coding: utf-8 _*_
"""
Time:     2024/1/15 9:37
Author:   Bana_lv
Version:  V 0.1
File:     model.py"""
from app import dbclass User(db.Model):user_id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(60), nullable=False)password = db.Column(db.String(30), nullable=False)

manager.py用于数据迁移管理,运行后将生成一个文件夹。

# _*_ coding: utf-8 _*_
"""
Time:     2024/1/15 9:37
Author:   Bana_lv
Version:  V 0.1
File:     manager.py"""
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from app import app, dbmigrate = Migrate(app, db)manager = Manager(app)
manager.add_command('db', MigrateCommand)if __name__ == "__main__":manager.run()

Flask-Migrate运行

初始化一个迁移脚本的环境
python manager.py db init
数据库的创建。
python manager.py db migrate
数据更新
python manager.py db upgrade

问题汇总

问题一:flask_migrate无法导入MigrateCommand【解决方法】
原因:Flask-Migrate 3.1.0 版本过高导致;
解决方法:降低版本即可。

pip install -i https://pypi.douban.com/simple/ --upgrade Flask-Migrate==2.7.0

问题二:ImportError: cannot import name ‘_request_ctx_stack‘ from ‘flask‘

解决方法
修改 [你的虚拟环境]\Lib\site-packages\flask_script\commands.py
from flask import request_ctx_stack 改为 from flask import request_ctx
修改 [你的虚拟环境]\Lib\site-packages\flask_init
.py
导入 from .globals import _no_app_msg, request_ctx

问题三:ModuleNotFoundError: No module named ‘flask._compat‘

原因分析:

ModuleNotFoundError: No module named 'flask._compat

ctrl+左键 查看manager查看源码,找到from flask._compat import text_type这行,按ctrl进行查看,显示找不到文件,Flask 2.0.0版本修改了。

Flask版本过高问题:flask里面的 ._compat.py文件没有,降低版本即可。

pip3 install flask==1.1.2

不降级则可以尝试修改一下

flask_script/__init__.py中from ._compat import text_type 改成 from flask_script._compat import text_type 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/624145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微机原理常考填空以及注意事项

以下: 1,两条高位地址线未参加地址译码,则对应的地址范围它的容量是多少倍? 答:公式CPU的地址线(假设16位)(它的低位地址线一般进入片内A0~A10,高位A11就是A、A12就是B、…

DNS

目录 一、名字解析介绍和DNS 1.1.什么是DNS 1.2.域名体系结构 1.3.DNS查询方式 1.4.DNS解析过程 1.5.DNS服务器类型 二、安装配置 2.1.DNS软件bind 2.2.修改权限 和 监听地址 2.3.手写域名配置文件 2.4.手写数据库配置文件 2.5检测文件格式的命令 一、名字解析介绍和…

TreeSet指定排序规则

TreeSet集合如果要对添加的元素进行排序,则添加的元素所属的类要实现Comparable接口(基本类型的包装类,String类都文现了该接口),Comparable接口的compareTo()方法内会用自然比较方法对元素排序…

【OpenCV学习笔记12】- 更改颜色空间

关于 OpenCV 官方文档的核心操作告一段落,接下来开始图像处理的学习。学习笔记中会记录官方给出的例子,也会给出自己根据官方的例子完成的更改代码,同样彩蛋的实现也会结合多个知识点一起实现一些小功能,来帮助我们对学会的知识点…

【数学建模美赛M奖速成系列】数据可视化(二)

数据可视化(二) 写在前面百分比堆叠线条图优点缺点实现pythonmatlab 火山图优点实现pythonmatlab 最后 写在前面 上一篇文章为大家分享了山脊图和气泡图的绘图方法与代码,这里学姐为继续为大家分享百分比堆叠线条图和火山图,包含…

Gd-DOTA-SH钆-大环配体的结构特点 | 星戈瑞

Gd-DOTA-SH钆-大环配体是一种具有特殊结构特点的化合物。(来自星戈瑞的科研试剂) Gd-DOTA-SH这个化合物的名称可以分解为三个部分。首先,"Gd"代表该化合物中含有钆元素(Gadolinium)。其次,"DOTA"代表四聚乙二…

R语言【文章复现】——集成式地绘制高分辨率的多样性分布图,对方法的检验和优化,以及处理思路的思考

参考文献 本文对一篇 2022 年发表在 New Phytologist 的绘图方法文章中的技术路线进行复现。 An integrated high-resolution mapping shows congruent biodiversity patterns of Fagales and Pinales Summary 文中,作者针对在全球尺度上绘制物种分布图提出了一种全新的方法…

华为网络设备 通过路由器子接口 Dot1q终结子接口实现跨VLAN通信

(二层交换机直接跳过三层交换价接入路由器时才使用该配置。推荐使用三层交换机建立VLANIF配置更简洁明了。如果VLAN较少可直接配置;路由器接口,一个物理接口一个VLAN) S1配置 vlan batch 2 to 3interface GigabitEthernet0/0/1port link-type trunkpor…

项目人力资源管理

1计划:规划人力资源管理 3执行:组建项目团队,建设项目团队,管理项目团队 1、规划人力资源管理 确定角色,职责及回报关系,编制人员配备管理计划 需要经常性复查,立即修正。 需要有备选人员。…

为什么代码里需要try/catch

throw 语句用来抛出一个用户自定义的异常,在抛出错误时,throw 之后的语句将不会执行 const getApi (data) > {if (isNaN(data)) {throw new Error(Parameter is not a number!);console.log(bar) // 这句永远不会执行,throw之后的代码都不会}}情况一…

[Python练习]使用Python爬虫爬取豆瓣top250的电影的页面源码

1.安装requests第三方库 在终端中输入以下代码(直接在cmd命令提示符中,不需要打开Python) pip install requests -i https://pypi.douban.com/simple/ 从豆瓣网提供的镜像网站下载requests第三方库 pip install requests 是从国外网站下…

喜报 ,思迈特荣获广东省“专精特新”企业认定,再创新高

近日,广东省工业和信息化厅发布 2023年专精特新中小企业名单,思迈特软件凭借专业技术实力、创新研发能力、行业影响力以及卓越的企业文化,经过层层选拔,荣获广东省“专精特新”企业认定。思迈特商业智能与大数据分析软件成功上架&…

数据库:园林题库软件(《城市绿地设计规范》答题卷三 )

《城市绿地设计规范》答题卷三 填空题 1、动物笼舍、温室等特种园林建筑设计,必须满足动物和植物的生态习性要求,同时还应满足游人观赏视觉和人身安全要求,并满足管理人员人身安全及操作方便的要求。 2、市绿地内的建筑应充分考虑雨水径流…

智能制造工业互联网建设方案——青创智通工业物联网

智能制造已经成为工业发展的重要趋势。智能制造系统架构与工业物联网建设方案作为实现智能制造的关键环节,对于推动工业转型升级和提升企业竞争力具有重要意义。青创智通工业物联网重点探讨智能制造系统架构与工业物联网建设方案的核心要素、实施步骤和未来发展方向…

MySQL进阶篇(六)InnoDB 引擎

一、逻辑存储结构 (1)表空间 表空间是 InnoDB 存储引擎逻辑结构的最高层, 如果用户启用了参数 innodb_file_per_table(在 8.0版本中默认开启) ,则每张表都会有一个表空间(xxx.ibd),一个 mysql 实…

Scipy 中级教程——插值和拟合

Python Scipy 中级教程:插值和拟合 Scipy 提供了丰富的插值和拟合工具,用于处理实验数据、平滑曲线、构建插值函数等。在本篇博客中,我们将深入介绍 Scipy 中的插值和拟合功能,并通过实例演示如何应用这些工具。 1. 插值 插值是…

可视可交互!在全志H618上用OpenCV读取图像显示到PyQt5窗口上

OpenCV能够处理图像、视频、深度图像等各种类型的视觉数据,在某些情况下,尽管OpenCV可以显示窗口,但PyQt5可能更适合用于创建复杂的交互式应用程序,而自带GPU的H618就成为了这些图像显示的最佳载体。 这里分享一个代码&#xff0…

C语言—文件

C中文件可分为文本文件和二进制文件。 文件指针和FILE 类型 在C语言中,FILE 类型是一个用于表示文件流的结构体类型。这个结构体在标准I/O(输入/输出)库中定义,尽管其确切的内部结构对程序员是隐藏的,也可能因不同的…

高精度PWM脉宽调制信号转模拟信号隔离变送器1Hz~10KHz转0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA

主要特性: >>精度等级:0.1级。产品出厂前已检验校正,用户可以直接使用 >>辅助电源:8-32V 宽范围供电 >>PWM脉宽调制信号输入: 1Hz~10KHz >>输出标准信号:0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等&…

云联接:揭开SD-WAN神秘面纱,颠覆你对网络的认知!

云联接(Cloud Connect)源于软件定义广域网(SD-WAN)。 软件定义广域网由于技术应用性强,近年来从一个由软件定义网络(SDN)部分衍生的分支概念发展为大规模普适的实践技术,已成为建立…