首页 > 数据库 >多线程访问数据库报错

多线程访问数据库报错

时间:2023-08-05 17:44:43浏览次数:45  
标签:数据库 connection 报错 sql 响应函数 多线程 self

在用flask实现http服务器的时候,只需要指定路由和访问方法,前端的访问就可以获取到,然后触发后端的响应函数,如果后端响应函数用公用的sql connection的时候,可能会导致数据库连接冲突报错,报错内容如下:

AttributeError: 'NoneType' object has no attribute 'read' 

参考这篇博客的解释:https://blog.csdn.net/qq_41767116/article/details/119290133

解决方法:避免使用global connect,在每个响应函数里面新建一个数据库连接实体,使用完毕后释放,因此可以封装一个数据库操作的类,init函数建立连接,del函数close连接。

此外,在使用数据库过程中,会有数据库断连的情况,可以封装一个数据库执行函数,在每次调用执行SQL语句时先重连一下:

def execute_sqlorder(self, sql_order, values=None):
      """
        封装的SQL执行语句
        :param sql_order:
        :param values:
        :return:
        """
        try:
            self.connection.ping(reconnect=True)
            self.cursor.execute(sql_order, values)
            self.connection.commit()
        except:
            self.connection.rollback()  # 出错回滚
            print("error")
            return -1
        return 1

 

标签:数据库,connection,报错,sql,响应函数,多线程,self
From: https://www.cnblogs.com/honor260/p/17608310.html

相关文章

  • 传奇服务端架设如何正确设置传奇服务端数据库?
    要配置DBC,让程序能够正确访问到数据库打开控制面板(图1.4.1)双击打开BDEAdministrator在菜单栏上选择Object→New弹出对话框.选择数据库驱动程序名字STANDARD标准.在左边输入数据库名字HERODB.数据库名字可以随便取.但服务端设置上要相对应.选择数据库表的路径,之前我们将服......
  • 金奖方案 | 一专多能、傲视寰宇,南大通用GBase8c数据库牛在哪里?opengauss
    金奖方案|一专多能、傲视寰宇,南大通用GBase8c数据库牛在哪里?opengaussopenGauss2022-11-0420:59发表于四川鲲鹏应用创新大赛是面向全球开发者的顶级赛事,本次大赛由21个鲲鹏生态创新中心与华为,联合中国软件行业协会、绿色计算产业联盟、中国计算机行业协会、中国计算机学会高专......
  • 数据库迁移系列】从MySQL到openGauss的数据库对象迁移实践
    数据库迁移系列】从MySQL到openGauss的数据库对象迁移实践原创酷哥[openGauss](javascript:void(0);)2022-11-0718:03发表于广东9月30日新发布的openGauss3.1.0版本,工具的全量迁移和增量迁移的性能不但有了全面提升,而且支持数据库对象视图、触发器、自定义函数、存储过程的......
  • java多线程并发面试题总结(史上最全40道)
    1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然","会用"只是"知其然","为什么用"才是"知其所以然",只有达到"知其然知其所以然"的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个......
  • java多线程并发面试题总结(史上最全40道)
    1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然","会用"只是"知其然","为什么用"才是"知其所以然",只有达到"知其然知其所以然"的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问......
  • C#数据库连接配置文件存放至App.Config
    目录使用VisualStudio使用Rider 安装Nuget包获取配置连接数据库使用VisualStudio在需要添加配置文件的类右键-添加-新建项 选择应用配置文件,注意名称有格式要求 使用vs生成的话初始化代码是有的,然后输入的时候是有提示的使用Rider右键需要添加配置文件的项目,Add-File 使用Ri......
  • 使用VS时的一些报错_1
    一.使用EasyX库函数中的loadimage函数时报错:loadimage没有与参数列表匹配的重载函数解决方法:右键解决方案,点击属性,【高级】→【高级属性】右【字符集】设置成【使用多字节字符集】即可解决。二.错误C4996‘strcpy’:Thisfunctionorvariablemaybeunsafe.Considerusi......
  • SQL SERVER数据库日志清理
    新建查询,选择master数据库USE[master]GOALTERDATABASEblogSETRECOVERYSIMPLEWITHNO_WAIT----blog为需要清除日志的数据库名称GOALTERDATABASEblogSETRECOVERYSIMPLE--简单模式----blog为需要清除日志的数据库名称GOUSEblo......
  • 常见的 NoSQL 数据库有哪些?
    前言今天我们来介绍一下工作开发中常见的一些NoSQL数据库及其基本特点。欢迎在评论区留下文章中没有介绍且好用的​NOSQL数据库......
  • Spring Boot 数据库连接池性能优化
    当涉及到SpringBoot中的性能优化时,连接池是一个非常重要的话题。连接池在数据库访问和其他外部资源访问中扮演着关键角色,可以显著提升应用程序的性能和资源利用率。在本文中,我们将深入探讨如何在SpringBoot应用中优化数据库连接池的配置,从而提升应用性能。数据库连接池是管理......