Supprimer utilisateur mariadb tkinter

codeur782 -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je développe un logiciel en python en interface graphique avec tkinter.
J'ai une table Tree qui m'affiche le contenu de la bdd sql (mariadb)
J'aimerais que l'utilisateur puisse supprimer une ligne en la séléctionnant, puis en cliquant sur le bouton "supprimer" (suppression simultanée dans le Tree et la bdd) . J'ai la base de la fonction mais la console me retourne un erreur.

code :
def delete():
    selected_item = tree.selection()[0]

    conn = sqlite3.connect("database.db")
    cursor = conn.cursor()
    mycursor = conn.cursor()
    sql_select_Query = ("DELETE FROM tt_users WHERE user_id = %s")
    mycursor.execute(sql_select_Query, selected_item)
    conn.commit()
    tree.delete(selected_item)
    print('delete')


erreur :

Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.9/tkinter/__init__.py", line 1892, in __call__
return self.func(*args)
File "/home/tethys/Documents/developpement/python/app/main.py", line 183, in <lambda>
deleteUserBtn = Button(tab1,text="Supprimer",command=lambda:delete())
File "/home/tethys/Documents/developpement/python/app/main.py", line 163, in delete
mycursor.execute(sql_select_Query, selected_item)
sqlite3.OperationalError: near "%": syntax error


Merci d'avance
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
moi j'essaierais en remplaçant
%s
par
?
.
0
codeur782
 
Le résultat est une erreur :


Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.9/tkinter/__init__.py", line 1892, in __call__
return self.func(*args)
File "/home/tethys/Documents/developpement/python/app/main.py", line 183, in <lambda>
deleteUserBtn = Button(tab1,text="Supprimer",command=lambda:delete())
File "/home/tethys/Documents/developpement/python/app/main.py", line 163, in delete
mycursor.execute(sql_select_Query, selected_item)
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 4 supplied.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > codeur782
 
Comprends-tu le message d'erreur?
Il t'indique que tu as 4 éléments dans
selected_item
, alors qu'il n'en faut qu'un seul.
0
codeur782 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Oui, du coup il faudrait que je ne selectionne qu'une colonne du tableau....
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > codeur782
 
donc que tu extraies le
user_id
de
selected_item
.
0
codeur782
 
Je ne sais pas trop comment m'y prendre.. Dans l'idéal, l'utilisateur sélectionne la ligne, le programme selectionne l'id, et quand l'uilisateur clique sur suppr alors la ligne est supprimée ppar l'ID. J'ai résolu une erreur, c'était la requete sql qui était mal ecrite mais maintenant il faut que je trouve comment ressortir une valeur du tableau...
Merci encore
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
fais peut-être
print( type(selected_item) , selected_item )
, pour comprendre ce qu'est
selected_item
.
0