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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 nslt的可用模型,或者其他可以进行推理的现有模型
  • ¥15 arduino上连sim900a实现连接mqtt服务器
  • ¥15 vncviewer7.0安装后如何正确注册License许可证,激活使用
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并2
  • ¥66 关于人体营养与饮食规划的线性规划模型
  • ¥15 基于深度学习的快递面单识别系统
  • ¥15 Multisim仿真设计地铁到站提醒电路
  • ¥15 怎么用一个500W电源给5台60W的电脑供电
  • ¥15 请推荐一个轻量级规则引擎,配合流程引擎使用,规则引擎负责判断出符合规则的流程引擎模板id
  • ¥15 Excel表只有年月怎么计算年龄