首页 > 数据库 >flask_SQLAlchemy 出现了 Lost connection to MySQL server during query Mysql主机连接超时 错误。如何解决

flask_SQLAlchemy 出现了 Lost connection to MySQL server during query Mysql主机连接超时 错误。如何解决

时间:2023-05-23 18:44:06浏览次数:47  
标签:__ SQLAlchemy Lost flask app MySQL MYSQL 连接

使用python flask框架 flask_sqlalchemy 时出现了 Lost connection to MySQL server during query Mysql主机连接超时的问题

由于Mysql会定时处理长时间未连接使用的连接池 具体时长可通过 查看

show variables like '%timeout%'

 wait_timeout 为超时时长,这里的时间时 120秒

再超过120秒时会导致 Lost connection to MySQL server during query Mysql主机连接超时 错误

在通过网上翻阅具体解决方案发现答案有了滞后性,旧版本中可以通过配置

SQLALCHEMY_POOL_RECYCLE = 120   #多少秒后自动回收连接。这对 MySQL 是必要的, 它默认移除闲置多于 8 小时的连接。注意如果 使用了 MySQL , Flask-SQLALchemy 自动设定 这个值为 2 小时。

来进行自动回收连接的配置。

在查看源码后发现新版本已经移除了 SQLALCHEMY_POOL_RECYCLE 的配置项

采用

    SQLALCHEMY_ENGINE_OPTIONS = {
        "pool_recycle" : 120 #自动回收连接的秒数
    }

这种方式进行配置自动连接回收配置。

具体配置操作代码如下

main.py

    app = Flask(__name__)
    #引入数据库配置
    app.config.from_object(Config)
    #注册数据库
    init_db(app)

if __name__ == "__main__":
    app.run(debug=True,port=5000,host="0.0.0.0")

init_db.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy


db = SQLAlchemy()

def init_db(app:Flask):
    db.init_app(app)

config.py

class Config:
    DEBUG = True
    HOST  = "127.0.0.1"
    PORT  = 5200

    #数据库配置
    MYSQL_USERNAME = "root"
    MYSQL_PASSWORD = ""
    MYSQL_HOST     = "127.0.0.1"
    MYSQL_PORT     = 3306
    MYSQL_DATABASE = ""

    #mysql 数据库的配置信息
    SQLALCHEMY_ECHO = True #如果设置成 True,SQLAlchemy 将会记录所有 发到标准输出(stderr)的语句,这对调试很有帮助。
    SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{MYSQL_USERNAME}:{MYSQL_PASSWORD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}?charset=utf8mb4"
    SQLALCHEMY_ENGINE_OPTIONS = {
        "pool_recycle" : 120 #自动回收连接的秒数
    }

 

标签:__,SQLAlchemy,Lost,flask,app,MySQL,MYSQL,连接
From: https://www.cnblogs.com/zheng01/p/17426084.html

相关文章

  • SQLAlchemy介绍
    SQLAlchemy介绍SQLAlchemy是一个基于Python的ORM框架。该框架是建立在DB-API之上,使用关系对象映射进行数据库操作。简而言之就是,将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。补充:什么是DB-API?是Python的数据库接口规范。在没有DB-API之前,各数据库之间的应用......
  • Flask路由
    Flask路由1.指定路由地址#指定访问路径为[email protected]('/hello')defdemo1():return'helloworld'2.给路由传参#路由传递参数@app.route('/user/<user_id>')defuser_info(user_id):return'hello%s'%user_id#路由传递的参数默认......
  • Flask熟悉
    Flask熟悉1.安装flaskpip3installflask2.一个最小的Flask应用fromflaskimportFlaskapp=Flask(__name__)@app.route("/")defhello_world():return"<p>Hello,World!</p>"那么,这些代码是什么意思呢?首先我们导入了Flask类。该类的实例将会成为我们......
  • Flask相关配置参数,加载配置文件
    Flask相关配置参数,加载配置文件#导入Flask类fromflaskimportFlask#Flask函数接收一个参数__name__,它会指向程序所在的包app=Flask(__name__)#装饰器的作用是将路由映射到视图函数[email protected]('/')defindex():return'HelloWorld'#Flask应用程......
  • python 云服务器部署 flask 项目
    测试模式,非生产模式1.修改host和port 2.上传项目 3.下载python项目管理器  4.创建项目 5.开放端口,远程连接数据库......
  • flask-app01
    flask+rpc提供json-rpc接口apicloud+vue客户端APP搭建功能模块:用户管理、社交模块、果园模块、抽奖模块、直播群聊模块 服务端项目搭建创建虚拟环境condacreate-nyingmingpython=3.8condaactivateyingming 安装开发中使用的依赖模块pipinstallflaskpip......
  • rabbitmq:pika.exceptions.IncompatibleProtocolError: StreamLostError: ('Transport
    本地连接rabbitmq出现这个问题: 是因为我把port写成了15672,改成5672即可 ......
  • Tornado 和 flask 的区别
    Tornado和Flask是PythonWeb开发的两种框架,他们有以下区别:应用场景不同:Tornado主要用于实时Web服务和长轮询等场景,例如消息推送,Flask则用于传统的Web应用。性能不同:Tornado采用了异步非阻塞的IO模型,而Flask则是阻塞模型,因此在高负载的情况下,Tornado相对于Flask拥有着更好的性能......
  • flask_前端继承
      外部引入一段代码,include    ......
  • Flask003_ URL 与视图
    [email protected]中的第一个字符串参数叫作URL。“/”代表网站的根路径,只要在浏览器中输入网站的域名即可访问到“/”。视图函数被@app.route装饰的函数叫作视图函数。......