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
相关产品推荐
相关产品推荐

