如何将MySQL查询到的记录值正确赋值给Python变量?
报错原因
mysql.connector 默认创建的普通游标返回的查询结果为元组类型,元组仅支持整数下标访问元素,不支持使用字符串格式的字段名作为索引,因此data['temperature']写法会触发类型错误。
解决方案
方案1:使用元组下标取值
你的查询语句仅返回temperature单个字段,fetchone()拿到的元组第一个元素就是目标值,直接按下标取值即可:
# 替换原来的 temp = data['temperature'] 即可 temp = data[0]
如果后续查询多字段,按SELECT语句中字段的顺序,依次对应下标0、1、2...即可取值。
方案2:创建字典游标,支持字段名访问
如果需要用字段名作为key取值,可以在初始化游标时指定dictionary=True参数,游标会返回字典格式的查询结果:
# 修改创建游标的代码行 mycursor = db.cursor(dictionary=True)
修改后你原来的temp = data['temperature']代码可以正常运行。
额外优化建议
查询可能返回空结果(表中无数据时fetchone()会返回None),建议取值前先做非空判断,避免后续报错:
if data: # 取值逻辑写在这里 temp = data[0] # 或者data['temperature'] else: # 无数据的兜底逻辑 temp = 0
内容的提问来源于stack exchange,提问作者matrunaydo
相关产品推荐
相关产品推荐

