Как получить список с помощью SQL-запроса в Python? - PullRequest
0 голосов
/ 09 июня 2018

Я здесь определяю функцию и создаю запрос.

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 ]

0 голосов
/ 09 июня 2018

row = cur.fetchall() не даст вам строку, но список строк, поэтому row - это вовсе не строка, а row[2] - третья строка в списке, а не третье поле в строке.Если вам нужна только строка, используйте cur.fetchone().

. Обратите внимание, что запрос может вернуть несколько строк, и неясно, что вы хотите сделать в этом случае, поэтому я не буду здесь заниматься этим.cur.fetchone() даст вам только один ряд.

0 голосов
/ 09 июня 2018

row[2] возвращает 3-ю строку списка строк.row[0][2] возвращает 3-й столбец 1-й строки.

Вы можете запустить такой фрагмент кода, чтобы увидеть, что возвращается:

cur.execute(...)
for row in cur:
    print(row)
...