cursor.fetchall() 抛出索引超出范围错误

cursor.fetchall() throws index out or range error

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

我使用 python cx_Oracle 连接到 Oracle 数据库。

cursor.fetchall() return我用这种格式记录 [(4352,)]

我想检索“4352”,所以我继续这样做:pk = cursor.fetchall()[0][0]

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

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

谢谢

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

看起来结果列表是空的。

我知道出了什么问题。

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

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

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

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