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

Python中如何从SQLite查询结果提取整数值?

解决SQLite查询结果提取整数的问题

你遇到的问题核心是没理清查询返回结果的结构,再加上变量名大小写不一致的小坑,我来一步步帮你搞定:

首先,你的db.execute返回的是一个列表,里面包着一个字典(从打印结果[{'SUM(Shares)':10}]就能看出来)。直接拿这个列表去和整数比较肯定会报错——列表没法用<和整数对比,而且你代码里还有个细节错误:定义的变量是SharesOwned(大写开头),后面判断时用了sharesOwned(小写开头),Python是大小写敏感的,这俩会被当成完全不同的变量,会触发NameError,得先统一变量名。

正确的数值提取步骤:

  • 第一步:从返回的列表里取出唯一的字典元素(用索引[0])
  • 第二步:通过字典的键'SUM(Shares)'拿到对应的数值
  • 第三步:处理空值情况(如果没有匹配的交易记录,SUM(Shares)会返回None,这时候转成0能避免后续比较出错)

修改后的代码示例:

# 执行查询,统一用蛇形命名(更符合Python编码规范)
shares_owned_result = db.execute("SELECT SUM(Shares) FROM transactionTable WHERE Share='FB'")

# 提取数值,同时处理无匹配结果的情况
shares_owned = shares_owned_result[0]['SUM(Shares)'] or 0

# 现在shares_owned就是整数了
print(shares_owned)  # 输出:10

# 后续的判断逻辑
if shares_owned < sharesToSell:
    return errorMessage("You don't own that many shares of FB")

额外补充:

如果你的SQLite库返回的是元组列表(比如[(10,)]而非字典列表),那提取方式要改成:

shares_owned = shares_owned_result[0][0] or 0

不过根据你给出的打印结果,你的情况属于字典列表,用第一种方式就完全没问题。

最后再提醒下:Python对大小写非常敏感,变量名的大小写必须完全一致,不然会被当成不同的变量处理哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:25:47