Как получить список с помощью SQL-запроса в Python?
Я здесь определяю функцию и делаю запрос.
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
2 ответа
row = cur.fetchall()
не даст вам строку, но список строк, так row
это совсем не скандал и row[2]
третья строка в списке, а не третье поле в ряду. Если вы хотите использовать только строку cur.fetchone()
,
Обратите внимание, что запрос может вернуть несколько строк, и неясно, что вы хотите сделать в этом случае, поэтому я не буду здесь заниматься этим. cur.fetchone()
в любом случае даст вам только один ряд.
row[2]
возвращает 3-ю строку списка строк. row[0][2]
возвращает 3-й столбец 1-го ряда.
Вы можете запустить такой фрагмент кода, чтобы увидеть, что возвращается:
cur.execute(...)
for row in cur:
print(row)