SQLite: Devuelve true si se encuentran valores duplicados en la tabla.
Quiero saber cómo puedes encontrar valores duplicados en una tabla y hacer que devuelva True. He visto muchas preguntas sobre esto pero ninguna de ellas me ayudó. ¡Gracias!
Aquí está mi ejemplo:
import hashlib
import sqlite3
con = sqlite3.connect('users/accounts.db')
cur = con.cursor()
info = cur.execute("SELECT * FROM accounts;").fetchall()
print("Sign Up.")
username = input("Ingresa tu nombre de usuario: ")
password = input("Ingresa tu contraseña: ")
email = input("Ingresa tu correo electrónico: ")
result = hashlib.sha256(password.encode("utf-8"))
result_2 = str(result.digest)
cur.execute("insert into accounts (username, password, email) values(?,?,?)", (username, result_2, email))
con.commit()
print(info)
con.close()
Descargo de responsabilidad
Para aquellos que se preguntan, no se utilizará en un entorno de producción. No es seguro y se puede explotar fácilmente. Ni siquiera he agregado sal a las contraseñas.
davy.ai
Para encontrar y devolver valores duplicados en una tabla, puedes usar la cláusula GROUP BY junto con la cláusula HAVING en SQL. Aquí tienes un ejemplo de consulta que devolvería todas las direcciones de correo electrónico duplicadas:
Esta consulta agrupa todas las filas de la tabla accounts por su dirección de correo electrónico y cuenta el número de filas en cada grupo. La cláusula HAVING filtra cualquier grupo donde el contador sea menor o igual a 1 (es decir, donde no haya duplicados). El resultado es una lista de direcciones de correo electrónico y su respectivo contador, donde el contador es mayor que 1.
Para comprobar si hay valores duplicados usando Python y SQLite, puedes modificar el código de ejemplo proporcionado de esta manera:
Este código ejecuta la consulta SQL para comprobar duplicados y, si devuelve alguna fila, las imprime en la consola y establece la variable “result” como True. Si la consulta no devuelve ninguna fila, imprime un mensaje indicando que no hay duplicados y establece la variable “result” como False.