Python数组在循环的第二回合中变为索引超出范围

Python数组在循环的第二回合中变为索引超出范围,python,sql,arrays,loops,Python,Sql,Arrays,Loops,行标准小时数[col]=行计算[0][col] 索引器:列表索引超出范围 当索引=1(循环中的第二圈)时会发生这种情况 其中col=0,但我将数组/列表声明为新的 for index in range(num_rows): #where num_rows is a constant ... sql_calcultion = "SELECT MonH,TueH,WedH,ThuH,FriH,SatH,SunH,MonOH,TueOH,WedOH,ThuOH,FriOH,Sa

行标准小时数[col]=行计算[0][col] 索引器:列表索引超出范围

当索引=1(循环中的第二圈)时会发生这种情况 其中col=0,但我将数组/列表声明为新的

    for index in range(num_rows): #where num_rows is a constant
    ...
    sql_calcultion = "SELECT MonH,TueH,WedH,ThuH,FriH,SatH,SunH,MonOH,TueOH,WedOH,ThuOH,FriOH,SatOH,SunOH FROM Calculation WHERE EmployeeID=" + str(row_employee[index][0]) #EmployeeID
    cursor.execute(sql_calcultion)
    row_calculation = cursor.fetchall() #one row only

    row_norm_hours = {}
    row_ot_hours = {}

    for col in range(7):
        row_norm_hours[col] = row_calculation[0][col]
        row_ot_hours[col] = row_calculation[0][col+7]
有什么想法吗?谢谢


更新:我在查询时出错,EmployeeID存在,没有计算表的正确行。这导致行_计算为空。因此,col的任何值的行_计算[0][col]都是超出范围的索引

您确定index=1的查询返回非空结果吗?索引器可能来自代码中的“0”,而不是“col”

row_norm_hours[col] = row_calculation[0][col]

术语挑剔:如果“我将数组/列表声明为新的”指的是
行\u norm\u hours
,则这是一个dict,而不是数组或列表。但您的基本前提是正确的-即使在dict中尚未出现
col
时,对
row\u norm\u hours
的索引赋值也不会失败。因此问题必须在语句的右侧。可能是因为当您执行
[col+7]时
python它实际上在计算
col+7
,这将导致一个不存在的索引。尝试将
col
分配给另一个变量。我不太确定though@HigorRossato行_计算[0][col+7]不是有错误的行。虽然,我不认为它是源代码,因为row_计算中有14行total@Kevin,在我之前测试“打印(行_计算)”时,循环“范围(7)中的列”。索引为0时填充,但索引为1时为空。您可能是rightcursor。fetchall()始终返回2d数组。数据格式为[行][列]。然而,在某种程度上,您对行_计算中index=1的空结果的看法是正确的。也许我的错误在查询上,而不是循环上。