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

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日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效