pymysql.err.InterfaceError:(0,'')在对sql表进行大量推送时出错

问题描述 投票:0回答:1

我在很短的时间内从使用很多不同线程的python代码(使用pymysql)对mysql表进行了大量插入。

每个线程(其中有许多线程)可能会或可能不会最终将数据推送到MySql表。

这是导致问题的代码块(可以为每个运行的线程调用):

        sql = ("INSERT INTO LOCATIONS (location_id, place_name) VALUES (%s, %s)")
        cursor = self.connection.cursor()          
        cursor.execute(sql, (location_id, place_name))     
        cursor.close()

它具体是这一行:

cursor.execute(sql, (location_id, place_name))

这会导致此错误:

pymysql.err.InterfaceError: (0, '')

另请注意,我在上面的块所在的类的init中定义了self.connection。因此所有线程共享一个self.connection对象,但获取自己的游标对象。

错误似乎是随机发生的,只是在对mysql表进行了大量插入之后才开始出现(我认为)。它并不一致意味着每次尝试插入mysql都不会发生这种情况。

我已经搜索了这个特定的错误,似乎可能是在运行查询之前光标被关闭了。但我相信很明显我在执行查询后关闭光标。

现在我认为这是因为:

  1. 对MySql表有某种写入限制,虽然pymysql.err.InterfaceError的错误似乎没有具体说明
  2. 事实上,我在高范围内定义的连接具有从线程创建的游标,这可能会导致此问题。

思考?

python mysql multithreading pymysql
1个回答
0
投票

似乎问题与我有一个通用的连接对象有关。每个线程创建一个似乎已经删除了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.