Bonjour,
Je suis sur un python 3.7 et un postgresql 9.6.
J'ai créé sous postgresql une table client(Nom_client,Age_client)
J'ai utilisé Tkinter pour faire une petite grille de saisie avec 2 Entry et un bouton pour lancer la requête sql. Voici un extrait du code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
def Enregistrer(P_Nom,P_Age):
host = "localhost"
user = "postgres"
dbname = "Evaluation"
password = "admin"
# Constrcution de la chaine de connection
conn_string = "host={0} user={1} dbname={2} password={3} ".format(host, user, dbname, password)
conn = psycopg2.connect(conn_string)
cursor = conn.cursor()
cursor.execute("INSERT INTO client (nom_client,age_client) VALUES(%s,%s)", ([P_Nom],[P_Age]))
conn.commit() |
.............
1 2
| #Bouton Enregistrer
BoutonEnregistrer = Button(master, text ='Enregistrer', command = lambda : Enregistrer(Nom.get(),Age.get())) |
Tout fonctionne bien ...sauf que lorsque je regarde le contenu de mes champs dans postgresql, je vois apparaître {Dupont} dans le champs Nom et {42} dans le champs Age... donc avec des crochets en trop.
En fait, j'ai un soucis dans la clause Insert :
cursor.execute("INSERT INTO client (nom_client,age_client) VALUES(%s,%s)", ([P_Nom],[P_Age]))
avec la dernière partie pour récupérer les valeurs passées en paramètres dans la fonction Enregistrer.
Si je fais :
cursor.execute("INSERT INTO client (nom_client,age_client) VALUES(%s,%s)", ('P_Nom','P_Age'))
ou bien
cursor.execute("INSERT INTO client (nom_client,age_client) VALUES(%s,%s)", (P_Nom,P_Age))
J'ai toujours des erreurs.
La seule solution qui fonctionne est la première mais elle me met des {} dans le contenu du champs.
Je début en Python... je tourne depuis 3 heures sur ce problème en consultant les forum... et là je commence à être un peu sec.
Toute aide sera la bienvenue. Merci à vous !!
JM
Partager