XiaoJian39 2022-03-18 17:09 采纳率: 100%
浏览 3733
已结题

python运行问题IndexError: tuple index out of range

IndexError: tuple index out of range
import pymysql
import operator
'''创建数据库'''
import pymysql
import numpy as np
#  打开数据库连接,不需要指定数据库,因为需要创建数据库
#  conn = pymysql.connect('localhost',user = "root",passwd = "639801",db='maintenance')
conn = pymysql.connect(host="127.0.0.1", user="root", password="639801", database="user1", port=3306, autocommit=True)
#  获取游标
cursor=conn.cursor()
#  cursor.execute()
#  查询数据
cursor.execute("select * from maintenance1")
data = cursor.fetchall()
row = cursor.rowcount  # 取得记录个数,用于设置表格的行数
vol = len(data[0])  # 取得字段数,用于设置表格的列数
print(row)
start_num=[0.0]*row
end_num=[0.0]*row
data1=[]
for i in range(row):
    if data[i][1] != None and "+" in data[i][1]:
        start_str=str(data[i][1])
        if "k" in start_str:
            start_int1 = start_str[start_str.index("k") + 1:start_str.index("+")]
        if "K" in start_str:
            start_int1 = start_str[start_str.index("K") + 1:start_str.index("+")]
        start_int2 = start_str[start_str.index("+") + 1:]
        start_num1 = float(start_int1)*1000+float(start_int2)
    else:
        start_num1 = data[i][1]

    if data[i][2]!= None and "+" in data[i][2]:
        end_str = str(data[i][2])
        if "k" in end_str:
            end_int1 = end_str[end_str.index("k") + 1:end_str.index("+")]
        if "K" in end_str:
            end_int1 = end_str[end_str.index("K") + 1:end_str.index("+")]
        end_int2 = end_str[end_str.index("+") + 1:]
        end_num1 = float(end_int1)*1000+float(end_int2)
    else:
        end_num1 = data[i][2]
    start_num[i] = start_num1
    end_num[i] = end_num1
    data1.append((start_num[i], end_num[i], data[i][75]))

print(data1)
sql="UPDATE maintenance1 SET start_number=(%s),end_number =(%s) WHERE id=(%s)"

cursor.executemany(sql, data1)
cursor.close()
conn.commit()
conn.close()
print('sql执行成功')

执行结果

928
Traceback (most recent call last):
File "E:/python1xuexi/pythonProject5/zhuanghao2.py", line 45, in
data1.append((start_num[i], end_num[i], data[i][75]))
IndexError: tuple index out of range

Process finished with exit code 1

换一个数据库连接就行了,很奇怪,找不到解决方案,求帮助啊
我想要达到的结果
  • 写回答

3条回答 默认 最新

  • 关注

    data1.append((start_num[i], end_num[i], data[i][75]))
    中data[i][75]是取每行的第76个字段, 你数据库中有76个字段吗
    没有就是tuple index out of range元组的下标75超过了索引的范围

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • Code_流苏 C/C++领域优质创作者 2022-03-18 17:17
    关注

    tuple index out of range
    元组超过了索引的范围

    可以考虑检查一下元组是否出现了此类情况

    评论
  • 有问必答小助手 2022-03-20 09:01
    关注
    您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
    PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 已采纳回答 3月20日
  • 创建了问题 3月18日

悬赏问题

  • ¥15 神经网络建立应力预测模型
  • ¥20 反编译一款APP手游,解密出lua脚本。
  • ¥15 改一下,代码,让代码符合要求
  • ¥15 报错问题,只有两个错误,如图片所示,i多次初始化
  • ¥15 matlab runtime 如何收费
  • ¥15 Tpad api账户 api口令
  • ¥30 ppt进度条制作,vba语言
  • ¥15 生信simpleaffy包下载
  • ¥15 在二层网络中,掩码存在包含关系即可通信
  • ¥15 端口转发器解析失败不知道电脑设置了啥