Sqlite3.IntegrityError: UNIQUE constraint failed
Résolu
Janken
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 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
- Getting package info failed en français - Forum Huawei
- Efi pxe network boot failed lenovo ✓ - Forum Windows 10
- Io1 initialization failed - Forum Windows 10
1 réponse
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 586
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.