web-dev-qa-db-fra.com

Sélectionner une requête dans pymysql

Lors de l'exécution des éléments suivants:

import pymysql 



db = pymysql.connect(Host='localhost', port=3306, user='root')
cur = db.cursor()    
print(cur.execute("SELECT ParentGuardianID FROM ParentGuardianInformation WHERE UserID ='" + UserID + "'"))

La sortie est1

Comment pourrais-je modifier le code afin que la valeur réelle du ParentGuardianID (qui est "001") soit imprimée par opposition à 1.

Je suis sûr que la réponse est simple mais je suis un débutant, donc toute aide serait très appréciée - merci!

11
Jasmine078

cur.execute() renvoie simplement le nombre de lignes affectées. Vous devez faire cur.fetchone() pour obtenir le résultat réel, ou cur.fetchall() si vous attendez plusieurs lignes.

21
Daniel Roseman

La méthode cursor.execute() donne un curseur lié au résultat de la phrase SQL. Dans le cas d'une requête select, elle renvoie les lignes (le cas échéant) qui la rencontrent. Ainsi, vous pouvez parcourir ces lignes en utilisant une boucle for par exemple. De plus, je vous recommande d'utiliser pymysql.cursors.DictCursor car il permet de traiter les résultats de la requête comme un dictionnaire.

import pymysql 
db = pymysql.connect(Host='localhost', port=3306, user='root')
cur = db.cursor(pymysql.cursors.DictCursor)

UserId = 'whatsoever'
sql = "SELECT ParentGuardianID FROM ParentGuardianInformation WHERE UserID ='%s'"
cur.execute(sql % UserId)
for row in cur:
    print(row['ParentGuardianID'])

Bonne chance!

19
Guillermo Luque