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

