La base de données n'est pas mise à jour - Python Sqlite3

bonjour,
j’ai un soucis avec la commande « modifier », les variables prend bien les nouvelles valeurs modifier, mais l’enregistrement ne ce fait pas, mais il affiche le message ‹ Succès, Modification Effectue › pas de modification effectue, dont de correction, quelqu’un aurais une idée a me soumettre, sinon tous le reste fonctionne bien, pour moi l’erreur est au niveau de l’enregistrement de la bdd.
je peut joindre une partie du listing.
merci pour l’aide
cordialement
kyrob

Désolé, nous ne pouvons pas vous aider sans code. Montrez-nous ce que vous avez essayé.

Modifier

def modifier(self):
    con = sqlite3.connect("creer.db")
    cur = con.cursor()
    cur.execute("update formordi set cartemere=?, memoire=?, disk=?, boit=?, processeur=?, adresmac=?, adresse=?, boit1=?, boit2=?, boit3=?, boit4=?, boit5=? where id=?",     # id
            ((self.nom.get(),                   # Nom / cartemere
            self.mail.get(),                    # Mail / memoire
            self.sexe.get(),                    # sexe / disk
            self.boit.get() ,                   # type / boit
            self.contact.get(),                 # contact / processeur      
            self.dat.get(),                     # date / adresmac
            self.adresse.get("1.0", END),       # adresse / adresse
            self.id.get(),                      # id / id
            self.boit1.get(),                   # boite1 / boit1
            self.boit2.get(),                   # boite2 / boit2
            self.boit3.get(),                   # boite3 / boit3
            self.boit4.get(),                   # boite4 / boit4
            self.boit5.get())))                 # boite5 / boit5
            
    con.commit()
    messagebox.showinfo("Succes", "Modification Effectue")

    self.afficherRechertat()
    self.reini()
    con.close()

voici une partie du listing

Les champs dans l’instruction doit être dans le même ordre que les champs dans la table de base de donnés.

Python fait correspondre les champs dans l’ordre, et non pas en recherchant le champ et en faisant correspondre la même variable dans la table.

Utilisez plutôt le formatage suivant:

query = "UPDATE formordi SET cartemere=?, memoire=?, disk=?, boit=?, processeur=?, adresmac=?, adresse=?, boit1=?, boit2=?, boit3=?, boit4=?, boit5=? WHERE id=?"
cur.execute(query, (self.nom.get(),self.mail.get(),self.sexe.get(),self.boit.get(),self.contact.get(),self.dat.get(),self.adresse.get("1.0", END),self.id.get(), self.boit1.get(),self.boit2.get(), self.boit3.get(),self.boit4.get(),self.boit5.get()))

bonjour Isaac,
en envoient le listing je vient de voir l’erreur, j’avais oublier de mettre (‹ self.id.get ›) a la fin (en dernier) .
merci quand même pour l’aide si tu a des conseilles données je suis preneur.
j’ai plus qu’a mettre de l’ordre maintenant.
cordialement
kyrob

Je vois que vous avez bien mis conn.commit() à la fin de la fonction, c’est bizarre :face_with_monocle:

C’est une bonne solution, j’ai trouver ce petit logiciel que j’ai modifier pour qu’il corresponde a mon projet, j’ai rajouter des fonctions supplémentaires et j’ai oublie de placer (« self.id.get() ») a la fin.
merci pour tout
cordialement
kyrob

Bonjour Michel tous les self… allé a la fin de (« cur.execute ») sur la même ligne j’ai préférer de le mettre les uns en dessous des autres pur meilleur lecture et conn.commit() est une autre ligne, pourquoi ou le mettre ?
merci pour votre réponse
cordialement
kyrob

Non, non, c’est bien, juste, je me suis dis, pourquoi ton code ne fonctionne pas, sachant que t’as déjà ajouté conn.commit() sinon, je pense que t’as trouvé la solution.

oui j’ai trouvais la solution
merci quand même
cordialement
kyrob