1

我正在使用 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()”方法更好的方法?

谢谢

4

0 回答 0