首页 > 数据库技术 > 详细

多线程执行sql报错处理

时间:2019-07-11 11:21:47      阅读:313      评论:0      收藏:0      [点我收藏+]

 

pymysql多线程访问数据库报错:Packet sequence number wrong - got 7 expected 2 

原文:https://www.cnblogs.com/heiao10duan/p/9373237.html
参考:https://www.jianshu.com/p/60c8e0e440ea
原因:

使用了多线程,多线程共享了同一个数据库连接,但每个execute前没有加上互斥锁

方法:

方法一:每个execute前加上互斥锁

    lock.acquire()
    cursor.execute(command,data)     
    lock.release()
  • 1
  • 2
  • 3

方法二:

每个线程拥有自己的数据库连接,即在线程调用函数中加上数据库连接代码

方法三:

   所有线程共用一个连接池,需要考虑线程总数和连接池连接数上限的问题
未加互斥锁之前:
技术分享图片

加了互斥锁之后:

技术分享图片

技术分享图片

 



多线程执行sql报错处理

原文:https://www.cnblogs.com/qtclm/p/11168367.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!