• Welcome to LiuJason's Blog!

[已解决]pymysql多线程读写数据库报错:Packet sequence number wrong

Linux笔记 Jason 6 years ago (2019-02-26) 2224 Views 0 Comments QR code of this page

由于换了24核的服务器,因此在录入爬取的气象数据的时候想使用多线程,于是自学多线程Python的写法,中间就遇到了这个错误:Packet sequence number wrong
这是因为多线程共享了同一个数据库连接,但每个execute前没有加上互斥锁,解决方法如下:

方法一:每个execute前加上互斥锁
lock.acquire()
cursor.execute(command,data)
lock.release()

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

方法三:
所有线程共用一个连接池,需要考虑线程总数和连接池连接数上限的问题

这里我使用的是方法二,因为这样效率最高不用等待其他的线程执行完,实际上只需要把db和cur的全局变量名改为函数内的变量名即可。


This article is under CC BY-NC-SA 4.0 license.
Please quote the original link:https://www.liujason.com/article/215.html
Like (1)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址