cursor.fetchall()抛出索引不足或范围错误

时间:2018-11-23 10:22:53

标签: python-3.6 cx-oracle index-error

我有一个问题,不确定根本原因在哪里:

我使用python cx_Oracle连接到Oracle DB。

cursor.fetchall()以这种格式[(4352,)]

返回记录

我想检索“ 4352”,所以我继续执行此操作:pk = cursor.fetchall()[0][0]

但是我得到了:IndexError: list index out of range

我不确定自己在做什么错,因为当我在python控制台上手动创建此返回对象时,例如:item = [(4352,)],我可以通过调用item[0][0]

谢谢

2 个答案:

答案 0 :(得分:0)

您确定fetchall()语句返回的列表吗?

看起来结果列表为空。

答案 1 :(得分:0)

我弄清楚出了什么问题。

在我的代码中,我做了这样的事情:

print(cursor.fetchall()) # line 56
a = cursor.fetchall()[0][0] # line 57

在第56行,[((4352,)]]的输出正确。 但是,在第57行,cursor.fetchall()成为[]。这是因为cursor.fetchall()是生成器。它已在第56行之后自动被垃圾回收。

因此,如果我想从内部元组中提取4352,我必须首先调用第57行,然后如果想从数据库中查看返回结果的值,则必须调用print(a)。