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

Python3.x使用sqlite3模块从数据库提取整数的方法及返回值问题

解决方案

问题本质

  • cursor.fetchall()返回的结构是列表嵌套元组,每个元组对应一行查询结果,元组内的元素对应每行的每一列值。你查询的是单列单行数据,所以得到[(26.0,)]的结构。
  • 结果为26.0浮点数的原因是你的Employee表中HourlyRate字段类型为REAL(浮点型),sqlite3默认会按字段类型返回对应的值。

解决方法

快速修改现有代码

直接取值后转整数即可,同时优化查询写法、修复SQL注入风险,修改后的代码如下:

def calculatewage(self):
    employeeID = self.employee1.get()
    employeehrs = self.employee1hrs.get()

    with sqlite3.connect("ProjectDatabase") as db:
        cursor = db.cursor()
        # 用参数化查询代替字符串拼接,避免SQL注入漏洞
        code = "SELECT HourlyRate FROM Employee WHERE EmployeeID = ?"
        cursor.execute(code, (employeeID,))
        # 单行查询用fetchone,直接返回行元组,不需要再从列表取第一个元素
        output = cursor.fetchone()
    
    if output: # 判空,避免没有匹配到数据时报错
        hourly_rate = int(output[0])
        print(hourly_rate) # 这里拿到的就是你需要的整数26
    else:
        # 可自定义无匹配数据的处理逻辑
        print("未找到对应员工信息")

    return

根源解决(可选)

如果希望后续查询该字段默认返回整数,不需要每次转换,可以修改表结构,把HourlyRate字段的类型从REAL改成INTEGER,插入数据时也按整数类型存入即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:21:01