我在这里看到了一些答案,它们在每个查询之前打开一个新的 MySQL 游标,然后将其关闭。
这么慢吗?我不应该通过将其作为参数传递来回收光标吗?
我有一个执行无限循环的程序,因此最终连接将在默认的 8 小时后超时。
编辑:
根据要求,这是处理 SQL 查询的相关代码:
def fetch_data(query):
try:
cursor = db.Cursor()
cursor.execute(query)
return cursor.fetchall()
except OperationalError as e:
db = fetchDb()
db.autocommit(True)
print 'reconnecting and trying again...'
return fetch_data(query)
最佳答案
当然,重新连接数千次会花费更多时间。你最好将它设置为你的类的属性,如下所示:
class yourClass():
self.db = ...
self.cursor = self.con.Cursor()
# do something
def fetch_data(self, query):
try:
if self.cursor:
self.cursor.execute(query)
else:
raise OperationalError
return self.cursor.fetchall()
except OperationalError as e:
self.db = fetchDb()
self.db.autocommit(True)
print 'reconnecting and trying again...'
return fetch_data(query)
关于python - 为每个查询打开一个新的 MySQL 游标是否很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24923781/