Sqlite3.IntegrityError: UNIQUE constraint failed
Résolu
Janken
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
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
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
sur quelle ligne de code obtiens-tu cette erreur?
as-tu vérifié la valeur de
comment as-tu défini la table emails?
sur quelle ligne de code obtiens-tu cette erreur?
as-tu vérifié la valeur de
cursor.lastrowid?
comment as-tu défini la table emails?
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.