1. 程式人生 > >pymysql多執行緒訪問資料庫報錯:Packet sequence number wrong - got 7 expected 2

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()

方法二:

每個執行緒擁有自己的資料庫連線,即線上程呼叫函式中加上資料庫連線程式碼

方法三:

   所有執行緒共用一個連線池,需要考慮執行緒總數和連線池連線數上限的問題