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

无法从Python sqlite3数据库获取整数类型数据的问题求助

解决SQLite查询返回格式与类型问题

问题分析

你的代码存在两个核心问题:

  • SQL查询条件错误:WHERE username = username会被SQL解析为“字段username等于自身”,这会返回表中所有用户的clearance值,而非指定用户的数据。
  • 结果处理与类型转换缺失:SQLite默认返回字符串类型的字段值,且fetchall()/fetchone()会以元组/列表套元组的格式返回结果,需要手动提取值并转换类型。

修正后的代码

import sqlite3

db = sqlite3.connect("Users.db")
cursor = db.cursor()

def get_clearance(username='CC-2225'):
    # 使用参数绑定传递变量,修正查询条件同时避免SQL注入风险
    find_clearance = "SELECT clearance FROM user WHERE username = ?"
    cursor.execute(find_clearance, (username,))
    # 用户名唯一,用fetchone()获取单个结果元组
    result = cursor.fetchone()
    if result:
        # 提取元组中的值并转换为整数
        return int(result[0])
    # 未找到对应用户时返回None
    return None

print(get_clearance())

关键说明

  • 修正查询逻辑:用?作为占位符,通过cursor.execute的第二个参数传递用户名变量,确保只查询目标用户的clearance。
  • 优化结果获取:fetchone()比fetchall()更适合单条结果的场景,直接返回包含目标值的元组。
  • 类型转换:通过int(result[0])将数据库返回的字符串值转为整数,符合你需要的结果类型。
  • 异常防护:增加结果非空判断,避免未找到用户时触发索引访问错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:45:55