为每个查询打开新的MySQL游标慢吗?
我看到这里有一些回答提到,在每次查询之前都会打开一个新的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)
1 个回答
1
当然,如果你要重新连接几千次,花费的时间会多得多。你最好把它设置为你类的一个属性,像这样:
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)