Sqlite3.IntegrityError: falla restricción UNIQUE
Resuelto
Janken
-
yg_be Mensajes publicados 23437 Fecha de registro Estado Colaborador Última intervención -
yg_be Mensajes publicados 23437 Fecha de registro Estado Colaborador Última intervención -
Hola.
Me encuentro con un pequeño problema con mi base de datos. De hecho, cuando quiero hacer un registro en mi tabla de emails, que dispone de una columna para el identificador (id) y una columna para el email, se me muestra el siguiente error: sqlite3.IntegrityError: UNIQUE constraint failed: emails.id.
Así que aquí está mi pequeño programa en Python:
Merci de votre aide.
Me encuentro con un pequeño problema con mi base de datos. De hecho, cuando quiero hacer un registro en mi tabla de emails, que dispone de una columna para el identificador (id) y una columna para el email, se me muestra el siguiente error: sqlite3.IntegrityError: UNIQUE constraint failed: emails.id.
Así que aquí está mi pequeño programa en Python:
from tkinter import * from random import * from string import * from random import * from sqlite3 import * # Base de datos para registrar direcciones electrónicas connection = connect('base.db') # Cursor para las consultas hacia la base de datos cursor = connection.cursor() # Ventana window = Tk() # Función para configurar un fondo de color aleatorio 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 # Características de la ventana window.title("Window") window.minsize(720, 480) window.config(background=hexadecimal()) # Frame frame = Frame(window, bg=window['background']) # Función para generar una dirección electrónica aleatoria 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) # Mostrar los elementos frame.pack(expand=YES) entry.pack() button.pack() # Mostrar la ventana window.mainloop() # Cierre de la conexión a la base de datos connection.close() Merci de votre aide.
1 respuesta
yg_be
Mensajes publicados
23437
Fecha de registro
Estado
Colaborador
Última intervención
Ambassadeur
1 588
hola,
¿en qué línea de código obtienes este error?
¿has verificado el valor de
¿cómo definiste la tabla emails?
¿en qué línea de código obtienes este error?
¿has verificado el valor de
cursor.lastrowid?
¿cómo definiste la tabla emails?
El error ocurre en la línea 41. Como he puesto el identificador de mi tabla en auto-incremento, el valor de cursor.lastrowid lógicamente no debería dar problemas.
En realidad, cuando ejecuto el programa y hago clic una vez en el botón que dispara la función de registro del correo electrónico, no ocurre ningún error, pero cuando hago clic más de una vez, se produce el error.
si examinas el valor de cada vez, entenderás lo que está pasando.