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

Python+SQLite查询3D打印机状态:如何获取实际文本值而非Cursor对象

解决SQLite查询返回Cursor对象而非实际状态值的问题

Hey there! 我懂你现在的困扰啦——你直接把c.execute()的结果转成字符串,但这个方法返回的其实是一个游标对象(Cursor),根本不是你要的printer_status字段里的实际值。咱们来调整下代码,让它能正确输出'Busy'或者'Ready':

def check_printer_status(): 
    id = input("Enter an id: ") 
    # 执行查询,先拿到游标对象
    cursor = c.execute("SELECT printer_status FROM printer WHERE id =(?)",(id,))
    # 获取查询到的第一条记录(因为id唯一,只会有一条)
    result = cursor.fetchone()
    
    # 先处理找不到对应打印机的情况,避免后续报错
    if result is None:
        print(f"No printer found with id: {id}")
        return
    
    # 从元组里取出实际的状态值
    status = result[0]
    print(status) 
    
    if status == 'Ready': 
        print_job.execute_print_job(id) # 设置print_job_status为in-progress,操作print_job表
    elif status == 'Busy': 
        print_job.execute_print_job_pending(id) # 设置print_job_status为pending

给你拆解下关键改动:

  • c.execute()只是执行查询命令,返回的游标是用来读取结果的工具,不是结果本身,所以得用fetchone()来获取第一条匹配的记录。
  • fetchone()返回的是一个元组(比如('Ready',)),所以要通过result[0]提取里面的字符串值。
  • 加了result is None的判断,要是用户输入的id不存在,程序会友好提示,不会直接崩溃,更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:52:28