2017-02-22 27 views
1

Я использую PyMySQL для ping базы данных и возвращаю значения. Я делаю это так:Как вернуть один элемент в кортеж, возвращаемый .fetchone()?

cursor.execute(/*SQL Statement*/) 
    result = cursor.fetchone() 
    print (result) 

Я тестировал это, и он отлично работает. Теперь проблема я пытаюсь получить только первый элемент кортежа result, и я старался делать это так:

cursor.execute(/*SQL Statement*/) 
    result = cursor.fetchone()[0] 
    print (result) 

Однако это просто дать мне следующую ошибку:

Traceback (most recent call last): 
    File "myFile.py", line 20, in <module> 
    result = cursor.fetchone()[0] 
KeyError: 0 

I не может найти много документации по PyMySQL, но это выглядит правильно для меня, и это также имеет смысл, поэтому я не уверен, почему он не работает. Вот example Я следовал.

+3

Вы ошибаетесь. 'cursor.fetchone()' не возвращает кортеж, а [_dictionary_] (https://docs.python.org/3/tutorial/datastructures.html#dictionaries). Что до этого, я не совсем уверен. –

ответ

1

Когда вы используете .fetchone(), он возвращает один словарь с каждым значением, сопоставленным определенному ключу, который обычно будет именем столбца в вашей базе данных SQL. Так что ваш код должен выглядеть следующим образом:

cursor.execute(/*SQL Statement*/) 
result = cursor.fetchone() 
print (result[key]) 

Если вы не знаете, что ключ, то просто print (results) и она будет распечатать весь словарь со всеми ключами и соответствующими им значениями. Обратите внимание, что если ваш запрос возвращает более одной строки, вы должны использовать .fetchall(), который возвращает список словарей, поэтому вам сначала нужно выбрать кортеж, а затем дать ему ключ.

cursor.execute(/*SQL Statement*/) 
result = cursor.fetchone() 
print (result[index][key]) 

 Смежные вопросы

  • Нет связанных вопросов^_^