You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python操作Sqlite3报错TypeError: 'float' object is not subscriptable

Python操作Sqlite3报错TypeError: 'float' object is not subscriptable解决方案

报错原因

  • 取值对象错误:你已经通过cursor.fetchone()把查询结果赋值给了变量,后续写cursor[0][0]是在游标对象上做索引,完全指向了错误的操作对象。
  • 下标逻辑错误:fetchone()返回的(0.6655,)是单元素元组,取[0]就能拿到里面的浮点数;如果对拿到的浮点数再做[0]下标访问,就会触发「float对象不支持下标取值」的类型错误。
  • 冗余操作:纯SELECT查询不需要调用connection.commit(),commit()仅在执行增/删/改等会修改表数据的操作后才需要调用。

正确实现代码

cursor.execute("SELECT BoughtPrice FROM Trades ORDER BY IndexNo DESC LIMIT 1")
# 获取查询结果元组
result = cursor.fetchone()
print(result) # 输出格式为 (0.6655,)

# 直接取元组第一位即可得到纯浮点值
boughtprice = result[0]
print(boughtprice) # 输出 0.6655

可选优化写法

如果需要兼容表内无数据、查询结果为空的场景,可以加判空逻辑避免报错:

cursor.execute("SELECT BoughtPrice FROM Trades ORDER BY IndexNo DESC LIMIT 1")
result = cursor.fetchone()
# 无结果时可根据业务需要设置默认值
boughtprice = result[0] if result is not None else 0.0

如果确定查询一定有返回值,可以简化为一行取值:
boughtprice = cursor.execute("SELECT BoughtPrice FROM Trades ORDER BY IndexNo DESC LIMIT 1").fetchone()[0]

内容的提问来源于stack exchange,提问作者Zak Pinter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 23:42:44