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 结果的值.
我有一个问题,我不确定根本原因在哪里:
我使用 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 结果的值.