0

我在这里定义一个函数并进行查询。

def fetch(temp_pass,temp_accno):
    cur.execute('''SELECT id, name, acc_no, ph_no,address, email,balance
               FROM accounts
               WHERE id = %s and acc_no = %s''',
            (str(temp_pass), str(temp_accno)));
    row = cur.fetchall()
    print(row[2])

在这一行中应该是一个长度为 7 的列表,但是当我运行print(row[2]) 时,它给我的错误是列表索引超出范围。

这是我得到的错误

File "Accounting.py", line 13, in fetch
    print(row[2])
IndexError: list index out of range
4

2 回答 2

0

row[2]返回行列表的第三行。 row[0][2]返回第一行的第三列。

您可以运行这样的代码段来可视化返回的内容:

cur.execute(...)
for row in cur:
    print(row)
于 2018-06-09T19:31:59.227 回答
0

row = cur.fetchall()不会给你一行,而是一个行列表,所以row根本不是一行,row[2]是列表中的第三行,而不是一行中的第三个字段。如果您只想要一行,请使用cur.fetchone().

请注意,查询可能会返回几行,并且不清楚在这种情况下您要做什么,所以我不会在这里处理它。cur.fetchone()无论如何只会给你一排。

于 2018-06-09T19:51:43.327 回答