我正在使用 Python 和 JayDeBeApi 连接到 Oracle 类型的数据库。
在 SELECT 的语句中,我需要获得大约 10+ 千条记录。
我第一次使用“fetchAll()”方法完成了,但这会加载我的内存,我不希望这种情况发生。
我使用以下代码获取光标:
def do_select(sql, db_conn):
resultSet = None
try:
cursor = db_conn.cursor()
cursor.execute(sql)
resultSet = {
"cursor": cursor,
"columns": cursor.description
}
except Exception as error:
print("An error occurred" + str(error))
return resultSet
而不是使用这种类型的代码:
resultSet = self.do_select(sql, self.get_db_conn())
rows = resultSet["cursor"].fetchAll()
for row in rows:
# Do something...
我想做这样的事情:
resultSet = self.do_select(sql, self.get_db_conn())
while resultSet.next():
entire_row_tuple = resultSet.getCurrent() #I don't know if this is possible in python
#Do something with entire_row_tuple...
这在python中可能吗?或者,是否存在比使用“fetchAll()”方法更好的方法?
谢谢