2017-02-22 6 views
1

J'utilise PyMySQL pour envoyer une requête ping à une base de données et récupérer les valeurs. Je le fais comme ça:Comment puis-je retourner un seul élément dans un tuple retourné par .fetchone()?

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

J'ai testé cela et cela fonctionne très bien. Maintenant, le problème est que je suis en train d'obtenir que le premier élément du tuple result et moi avons essayé de faire cela comme ceci:

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

Quoi qu'il me donne l'erreur suivante:

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

I Je ne trouve pas beaucoup de documentation sur PyMySQL mais ça me va bien et ça a du sens, donc je ne sais pas pourquoi ça ne marche pas. Voici le example que je suivais.

+3

Vous avez tort. 'cursor.fetchone()' ne retourne pas un tuple, mais un [_dictionary_] (https://docs.python.org/3/tutorial/datastructures.html#dictionaries). Quant à savoir pourquoi, je ne suis pas exactement sûr. –

Répondre

1

Lorsque vous en utilisant .fetchone() il retourne un dictionnaire unique à chaque valeur mis en correspondance avec une clé spécifique qui sera généralement le nom de la colonne dans votre base de données SQL. Donc, votre code devrait ressembler à ceci:

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

Si vous ne savez pas ce que la clé est alors juste print (results) et il affichera tout le dictionnaire avec toutes les clés et leurs valeurs correspondantes.

Notez également que si votre requête renvoie plusieurs lignes, vous devez utiliser .fetchall() qui renvoie une liste de dictionnaires. Vous devez d'abord sélectionner un tuple, puis lui donner une clé.

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