我有一个问题,不确定根本原因在哪里:
我使用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]
谢谢
答案 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)。