Supprimer utilisateur mariadb tkinter

Fermé
codeur782 - Modifié le 18 mars 2022 à 10:26
yg_be Messages postés 22758 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 mai 2024 - 18 mars 2022 à 14:37
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 22758 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 mai 2024 1 480
18 mars 2022 à 11:11
bonjour,
moi j'essaierais en remplaçant
%s
par
?
.
0
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 22758 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 mai 2024 1 480 > codeur782
18 mars 2022 à 11:56
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 22758 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 mai 2024
18 mars 2022 à 11:58
Oui, du coup il faudrait que je ne selectionne qu'une colonne du tableau....
0
yg_be Messages postés 22758 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 mai 2024 1 480 > codeur782
18 mars 2022 à 12:14
donc que tu extraies le
user_id
de
selected_item
.
0
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 22758 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 mai 2024 1 480
18 mars 2022 à 14:37
fais peut-être
print( type(selected_item) , selected_item )
, pour comprendre ce qu'est
selected_item
.
0