为每个查询打开新的MySQL游标慢吗?

0 投票
1 回答
977 浏览
提问于 2025-04-18 14:33

我看到这里有一些回答提到,在每次查询之前都会打开一个新的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)    

撰写回答