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

这篇具有很好参考价值的文章主要介绍了【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 SQLAlchemy

app = 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 db

class 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, db

migrate = 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

不降级则可以尝试修改一下文章来源地址https://www.toymoban.com/news/detail-793278.html

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

到了这里,关于【Flask 连接数据库,使用Flask-Migrate实现数据库迁移及问题汇总】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • flask创建数据库连接池

    flask创建数据库连接池

    flask创建数据库连接池 在Python中,您可以使用 Flask-SQLAlchemy 这个扩展来创建一个数据库连接池。Flask-SQLAlchemy 是一个用于 Flask 框架的 SQLAlchemy 操作封装,实现了 ORM(Object Relational Mapper)。ORM 主要用于将类与数据库中的表建立映射关系,使得我们可以非常方便地通过操作类来操作

    2024年02月15日
    浏览(12)
  • EF命令行工具 migrate.exe 进行Code First更新数据库,6.3+使用ef6.exe

    使用EF的Code First迁移可以用于从Visual Studio内部更新数据库,但也可通过命令行工具 migrate.exe 进行执行。 如果项目已经更新到服务器,后面的更新数据库分为两种办法,要么把线上数据库备份到本地,然后使用VS迁移,要么使用命令迁移,官方提供了migrate.exe工具,命令如下,

    2024年02月04日
    浏览(11)
  • flask笔记 02 | Flask数据库连接(sqlite、mysql)

    flask笔记 02 | Flask数据库连接(sqlite、mysql)

    Flask没有指定使用的数据库,不像django提供了orm数据库抽象层,可以直接采用对象的方式操作数据库。但为了开发效率,在开发Flask项目中一般会选择 SQLALchemy 来操作数据库,类似django的ORM. SQLALchemy实际是对数据库的抽象,让开发者不直接使用sql语句进行开发,而是通过Pytho

    2024年01月25日
    浏览(12)
  • Flask 数据库 连接池、DBUtils、http 连接池

    Flask 数据库 连接池、DBUtils、http 连接池

    DBUtils 是一套用于管理 数据库 \\\" 连接池 \\\" 的Python包,为 \\\"高频度、高并发\\\"  的数据库访问提供更好的性能,可以自动管理连接对象的创建和释放。 并允许对非线程安全的数据库接口进行线程安全包装和连接。 该连接可在各种多线程环境中使用。 使用场景:如果使用的是流行

    2024年02月04日
    浏览(10)
  • flask-sqlalchemy连接数据库

    flask-sqlalchemy连接数据库

    1、安装flask_sqlalchemy和pymysql包 2、进行配置 使用Flask-SQLAlchemy扩展操作数据库,首先需要通过URL建立数据库连接,必须保存到Flask配置对象的SQLALCHEMY_DATABASE_URI中。 其中HOSTNAME为路由地址 PORT为端口号,我在创建数据库时没有更改,所以用的默认的3306端口号 DATABASE为数据库名字

    2024年02月06日
    浏览(12)
  • python Flask项目使用SQLalchemy连接数据库时,出现RuntimeError:Working outside of application context.的解决过程记录

    在使用python的Flask框架跟着教程编写项目时,我跟着教程使用了三个文件来组织,分别是main.py(主程序),module.py(数据库模型),controller.py(蓝图模块程序,用Blueprint衔接) 在主程序中,创建app、SQLalchemy实例对象db并将二者绑定 在module.py中,导入主程序中的db和app,创建

    2024年02月09日
    浏览(10)
  • flask-session、数据库连接池

    flask-session、数据库连接池

    flask 自带session---》以cookie的形式放到了浏览器中---》加密 真正的session,是在服务端存储     -django中存在djangosession表中     -flask中,使用第三方,保存在---》redis中---》flask-session 使用步骤 高版本的flask出现一个问题:         用高版本:在app中放一个参数  app.sessio

    2024年02月14日
    浏览(7)
  • (二十七)Flask之数据库连接池DBUtils库

    (二十七)Flask之数据库连接池DBUtils库

    🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 🔥🔥 本文已收录于Flask框架从入门到实战专栏 :《Flask框架从入门到实战》 🔥🔥 热门专栏推荐 :《Python全栈系列教程》、《爬虫从入门到精通系列

    2024年04月13日
    浏览(12)
  • 将网页数据读入数据库+将数据库数据读出到网页——基于python flask实现网页与数据库的交互连接【全网最全】

    将网页数据读入数据库+将数据库数据读出到网页——基于python flask实现网页与数据库的交互连接【全网最全】

    【全网最全!保姆级教学!!】 本篇博客基于flask技术,实现数据库和网页端的交互。 实现效果:在网页端输入数据,能够将数据存入数据库。反向操作时,能将数据库的数据取出,显示在网页端。不仅如此,还支持数据的查询和修改。  读取网页数据存入数据库,效果如下

    2024年02月13日
    浏览(14)
  • Django的数据库模型迁移命令makemigrations和migrate是否会导致数据库中的数据丢失?

    Django的数据库模型迁移命令makemigrations和migrate是否会导致数据库中的数据丢失?

    我们知道,如果在Django的文件models.py中写好了数据库模型,要生成对应的数据库,需要执行下面两条命令: 其中命令 makemigrations 是生成迁移执行文件,命令 migrate 是执行迁移命令。 那么如果修改了数据库模型文件models.py的内容,比如新增了一张表,那么是否会造成原来数据

    2024年02月12日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包