Sqlite3.IntegrityError: UNIQUE constraint failed
Résolu
Janken
-
yg_be Messages postés 24281 Statut Contributeur -
yg_be Messages postés 24281 Statut Contributeur -
Bonjour.
Je rencontre un petit problème avec ma base de données. En effet, lorsque je veux faire un enregistrement dans ma table d'emails, disposant d'une colonne pour l' identifiant (id) et d'une colonne pour l'email, l'erreur suivante m'est affichée : sqlite3.IntegrityError: UNIQUE constraint failed: emails.id.
Alors voilà mon petit programme en Python :
Merci de votre aide.
Je rencontre un petit problème avec ma base de données. En effet, lorsque je veux faire un enregistrement dans ma table d'emails, disposant d'une colonne pour l' identifiant (id) et d'une colonne pour l'email, l'erreur suivante m'est affichée : sqlite3.IntegrityError: UNIQUE constraint failed: emails.id.
Alors voilà mon petit programme en Python :
from tkinter import * from random import * from string import * from random import * from sqlite3 import * # Base de données pour enregistrer les adresses électroniques connection = connect('base.db') # Curseur pour les requêtes vers le base de données cursor = connection.cursor() # Fenêtre window = Tk() # Fonction pour configurer un fond de couleur alétoire def hexadecimal(): bits = list(str(i) for i in range(10)) + list("ABCDEF") colorcode = "#" for i in range(6): colorcode = colorcode + choice(bits) return colorcode # Caractéristiques de la fenêtre window.title("Window") window.minsize(720, 480) window.config(background=hexadecimal()) # Frame frame = Frame(window, bg=window['background']) # Fonction pour générer une adresse électronique aléatoire def generate_email(): entry.delete(0, END) chars = ascii_lowercase + digits + "." email = sample(chars, randint(5, 10)) + list("@gmail.com") for i in email: email = "".join(email) entry.insert(0, email) cursor.execute("INSERT INTO emails values(?, ?)", (cursor.lastrowid, email)) connection.commit() # Widgets entry = Entry(frame, bg=hexadecimal(), bd=2) button = Button(frame, text="Click", background=hexadecimal(), bg=hexadecimal(), command=generate_email) # Afficher les éléments frame.pack(expand=YES) entry.pack() button.pack() # Afficher la fenêtre window.mainloop() # Fermeture de la connexion à la base de données connection.close()
Merci de votre aide.
A voir également:
- (Sqlite3.integrityerror) unique constraint failed:
- Vue unique whatsapp désactiver - Accueil - WhatsApp
- Boot failed - Guide
- Io1 initialization failed - Forum Windows 10
- Efi pxe network boot failed lenovo ✓ - Forum Windows 10
- Windows failed to start - Forum Windows 7
L'erreur a lieu au niveau de la ligne 41. Comme j'ai mis l'identifiant de ma table en auto-incrémentation, la valeur de cursor.lastrowid ne devrait logiquement pas poser de souci.
En fait, lorsque j'exécute le programme et je clique une fois sur le bouton qui déclenche la fonction d'enregistrement de l'e-mail, aucune erreur n'a lieu, mais lorsque je clique plus d'une fois, l'erreur se produit.
si tu examines la valeur de chaque fois, tu comprendras ce qui se passe.