2017-10-19 5 views
1

Comment puis-je utiliser plusieurs variables dans ma requête:

import pymysql 

def get_firstname(y): 


db = pymysql.connect(host="xxx.xxx.xxx.xxx", 
    user="xxxx", 
    passwd="xxxxx",  
    db="XXXXXXX") 

cur = db.cursor() 

query = "SELECT first_name FROM information WHERE x = y;" 
cur.execute(query, (y)) 

result = str(cur.fetchone()[0]) 
return(result) 

x = user_id 
y = 1 


print (get_firstname(y)) 

Je voudrais être en mesure de changer x à différentes variables, en fonction de mon choix. Comme user_id, nom de famille, email etc. Toutes les colonnes de ma base de données. #y est une autre variable qui représente la valeur de la colonne dans ma base de données.Comment utiliser plusieurs variables pymysql

EX1: si x est "user_id" et y est "1", le résultat est le premier nom de la personne avec user_id 1.

Ex2: si x est "email" et y est « personne @ person.com ", le résultat est le prénom de la personne avec l'email [email protected]

Répondre

1

Utilisez le code ci-dessous:

import pymysql 

def get_firstname(x, y): 
    db = pymysql.connect(host='xxx.xxx.xxx.xxx', 
     port=3306, 
     user='xxxx', 
     password='xxxxxxxx',  
     db='test_db') 

    cur = db.cursor() 

    query = "SELECT first_name FROM `information` WHERE %s" %(x) 
    final_query = query+"=%s" 
    #print(final_query) 
    cur.execute(final_query, (y,)) 

    result = cur.fetchall() 
    return(result) 

x = 'user_id' 
y = 1 

output = get_firstname(x,y) 
if output: 
    for x in output: 
     print(x)[0] 

Sample Inputs:

x = 'email_id' 
y = '[email protected]' 

ou

x = 'user_id' 
y = 1  // Not enclosed with single quotes 
+0

Merci pour commentaires. – Bjarke

+0

m'a donné un autre problème cependant. Je l'ai utilisé comme x = 'last_name' y = 'Larsen' J'ai plusieurs utilisateurs avec ce nom de famille, mais il montre seulement le premier utilisateur avec ce nom de famille. Peut-il répéter le code jusqu'à ce qu'il n'y ait plus d'utilisateurs dans ma base de données avec ce nom, puis les imprimer tous? – Bjarke

+0

J'ai mis à jour le code pour récupérer toutes les valeurs. –