Supprimer utilisateur mariadb tkinter

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

2 réponses

  1. 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
    1. Contributeur
      fais peut-être
      print( type(selected_item) , selected_item )
      , pour comprendre ce qu'est
      selected_item
      .
      0
  2. Contributeur
    bonjour,
    moi j'essaierais en remplaçant
    %s
    par
    ?
    .
    0
    1. 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
    2. Contributeur
      @codeur782Comprends-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
    3. @yg_beOui, du coup il faudrait que je ne selectionne qu'une colonne du tableau....
      0
    4. Contributeur
      @codeur782donc que tu extraies le
      user_id
      de
      selected_item
      .
      0