es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

    SELECT email, COUNT(*) as count FROM accounts GROUP BY email HAVING count > 1;
    

    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:

    import sqlite3
    
    con = sqlite3.connect('users/accounts.db')
    cur = con.cursor()
    
    # Comprobar correos electrónicos duplicados
    email_count = cur.execute("SELECT email, COUNT(*) as count FROM accounts GROUP BY email HAVING count > 1;").fetchall()
    
    if email_count:
        # Hay duplicados
        print("Hay direcciones de correo electrónico duplicadas en la tabla 'accounts'.")
        print(email_count)
        result = True
    else:
        # No hay duplicados
        print("No hay direcciones de correo electrónico duplicadas en la tabla 'accounts'.")
        result = False
    
    con.close()
    

    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.

Comments are closed.