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

执行Python操作MySQL代码时遇元组/字典索引越界错误,求排查解决

Python操作MySQL的IndexError问题排查与修复

错误根源

  1. tuple index out of range:出现在排序代码行。dict.items()返回的每个元素是(姓名, (身高, 体重))的二元组,你写的x[2]不存在——每个元素只有x[0](键)和x[1](值,是个二元组),索引最多到1。
  2. dict index out of range:大概率是第一个错误引发的连锁问题,或者如果数据库查询结果的字段数量和循环解构的变量数不匹配(比如某条记录缺失字段),但核心问题还是排序逻辑错误。

修复后的完整代码

import mysql.connector
cnx = mysql.connector.connect(user='root', password='', host='127.0.0.1', database='employees')
cursor = cnx.cursor()
# 保留有效查询语句,删除冗余的第一行query
query = "SELECT Name, Weight, Height FROM employer ORDER BY Height DESC, Weight"
cursor.execute(query)
emp_dict = {}
# 确保每条查询结果能正确解构为三个字段
for Name, Weight, Height in cursor:
    emp_dict[Name] = (Height, Weight)
# 修正排序key:取值元组里的身高和体重作为排序依据
sorted_list = sorted(emp_dict.items(), key=lambda x: (x[1][0], x[1][1]), reverse=True)
for item in sorted_list:
    print(item[0], item[1][0], item[1][1])
cnx.close()

额外注意事项

  • 别用dict、list这类Python内置类型名当变量名,会覆盖内置函数,改成emp_dict、sorted_list更稳妥。
  • 如果数据库里有重复的Name,后面的记录会覆盖前面的(字典键唯一),这种情况可以考虑用列表存储,或者结合员工ID作为字典的键。
  • 建议加异常捕获处理(比如数据库连接失败、查询字段不匹配),让代码更健壮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:52:56