首页 |  我的博客 |  查看该博主内容分类 | 

pymysql.err.InternalError: Packet sequence number wrong - got 45 expected 0 django使用多线程造成的数据库错误

1. 原因:

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

2. 方法:

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

lock.acquire()
cursor.execute(command,data)
lock.release()

方法二:

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

方法三:

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

经最后实践,该方法最有效:https://www.cnblogs.com/aiyablog/p/16698143.html

posted @ 2022-09-17 15:34  Z哎呀  阅读(939)  评论(0)    收藏  举报