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
这样代码就可以正确地循环遍历查询结果并返回非空的结果集了。