代码之家  ›  专栏  ›  技术社区  ›  User

为每个查询打开一个新的MySQL游标是否很慢?

  •  0
  • User  · 技术社区  · 11 年前

    我在这里看到了一些答案,它们在每次查询之前打开一个新的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 回复  |  直到 11 年前
        1
  •  1
  •   Stephen Lin    11 年前

    当然,将连接重新连接数千次将需要更多的时间。您最好将其设置为类的属性,如下所示:

    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)