python-3.6 - cursor.fetchall() 抛出索引或范围错误
问题描述
我有一个问题,我不确定根本原因在哪里:
我使用 python cx_Oracle 连接到 Oracle 数据库。
cursor.fetchall()
以这种格式返回我的记录 [(4352,)]
我想检索“4352”,所以我继续这样做:pk = cursor.fetchall()[0][0]
但是我得到:IndexError: list index out of range
我不确定我做错了什么,因为当我在我的 python 控制台上手动创建这个返回对象时item = [(4352,)]
,我可以通过调用来检索 '4352'item[0][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),如果我想从数据库中查看返回结果的值。
推荐阅读
- javascript - 承诺链中的所有内容都必须是承诺吗?
- python-3.x - 如何在 VS 代码中打开输出窗口的自动换行?
- office365 - 使用 Redemption MAPITable 的用户 (PR_DISPLAT_TYPE) DisplayType
- chart.js - 在饼图中添加额外标签
- python-3.x - Python pandas计算数据帧中2个时间戳列之间的差异,不包括周末(以秒为单位)
- javascript - javascript函数和属性
- django - Django 删除主对象删除上的所有 M2M 相关对象
- javascript - 使用 GET 请求动态填充表
- python - Numpy Matmul 导致错误说模块没有属性 matmul
- java - 将 Actions 变量发送到方法