mysqldb:2014:Commands out of sync; you can’t run this command now

自己写了一个python的mysql的访问类,在python的多线程种使用种有了点问题,就是报这个2014的错误,在网上搜了很多资料,基本都是说mysqldb有问题,但是在解决方法上我这里测试通过一种方式:
在每次查询或是更新的时候,从新获取一个sql执行结构体cursor,执行完毕之后在close这个cursor,例如在类方法种我这样写:
def do_sql(self, p_sql):
self.cursor = self.conn.cursor() #这里重新获取
count = 0
try:
count = self.cursor.execute(p_sql)
except Exception, e:
print ‘mysql exception: ‘, e, p_sql
self.cursor.close() #异常的时候也关闭
self.cursor.close() #这里关闭
return count

这种解决方法可以解决单sql语句的问题,也就是说单个sql语句执行没有问题,但是要是遇到多个sql语句用;来链接起来再执行还是有问题的,
在我的程序种有这种情况,所以我又不得不把我程序种这种语句拆开或是合并成一条语句。

从各种查阅的资料来看,大家都把这种问题的根源指向了mysqldb,是mysqldb底层没有支持到这种操作方式,所以在执行sql语句的时候会抛出异常。

感觉有意思?来鼓励一下!
打赏黑光技术

Leave a Reply

Your email address will not be published. Required fields are marked *