cur.fetchmany()循环遍历后获取不到数据

def ExecQuery(self,sql):
    cur = self.__GetConnect()
    cur.execute(sql)
    #row = cur.fetchmany(10)
    row = cur.fetchmany(10)
    while row:
        row = cur.fetchmany(10)
        #if not row:
            #break
    self.conn.close()
    return row

参考GPT和自己的思路:根据你提供的代码,cur.fetchmany(10)语句已经在循环体外执行,因此初始化的row只会获取到第一次调用fetchmany()后的10个数据,而循环内的fetchmany()会返回空结果集,从而导致row不再更新,最终返回的结果是空。解决方法是将初始化row的语句放在循环内部,同时需要添加一个判断语句来跳出循环,具体代码如下:

def ExecQuery(self, sql):
    cur = self.__GetConnect()
    cur.execute(sql)
    row = cur.fetchmany(10)
    while row:
        # do something with the data
        row = cur.fetchmany(10)
        if not row:
            break
    self.conn.close()
    return row

这样代码就可以正确地循环遍历查询结果并返回非空的结果集了。