Как получить список с помощью 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)
Другие вопросы по тегам