Python 为每个查询打开一个新的MySQL游标是否很慢?
我在这里看到了一些答案,在每个查询之前打开一个新的MySQL游标,然后关闭它 那么慢吗?我不应该通过将光标作为参数传入来循环使用它吗 我有一个执行无限循环的程序,因此最终连接将在默认的8小时后超时 编辑: 根据要求,这是处理SQL查询的相关代码:Python 为每个查询打开一个新的MySQL游标是否很慢?,python,mysql,Python,Mysql,我在这里看到了一些答案,在每个查询之前打开一个新的MySQL游标,然后关闭它 那么慢吗?我不应该通过将光标作为参数传入来循环使用它吗 我有一个执行无限循环的程序,因此最终连接将在默认的8小时后超时 编辑: 根据要求,这是处理SQL查询的相关代码: def fetch_data(query): try: cursor = db.Cursor() cursor.execute(query) return cursor.fetchall()
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)
您应该通过分析将当前功能识别为瓶颈。还有一个问题似乎与您自己的问题类似:@hd1谁说基本功能没有完成?完成了,我正在修复在前10k-20k迭代后出现的一个bug,它依赖于这个问题。请发布您的代码@macdonjo。。。我来看看我加的。不确定它是否有用。为什么要拙劣地重新发明SQLAlchemy?