Cómo crear una aplicación de registro con Python y una base de datos

Cómo crear una aplicación de registro con Python y una base de datos

Python tiene un excelente soporte de bases de datos integrado en su biblioteca estándar, por lo que puede crear e interactuar con una base de datos sin depender de marcos externos como Django ORM.

SQLite es liviano y fácil de integrar con Python. Descubra los principios básicos de la programación de bases de datos en Python con una sencilla aplicación de registro de usuarios.

Cómo crear una base de datos en Python

Puedes encontrar el código utilizado para este tutorial en este repositorio de GitHub.

Para crear e interactuar con una base de datos en Python, necesitas dos cosas principales: una conexión y un cursor .

Una conexión le ayuda a conectarse a una base de datos existente o crear una nueva. A continuación se explica cómo crear una conexión de base de datos en Python con SQLite:

import sqlite3# Connect to a (new) databaseconn = sqlite3.connect('path/to/database.db')# Close the connectionconn.close()

El método connect() toma la ruta a una base de datos existente. Si no hay ninguna base de datos en la ruta especificada, creará una. Debe cerrar la conexión de su base de datos cuando haya terminado de interactuar con la base de datos.

Un cursor le ayuda a interactuar con la base de datos conectada. Utilizará un cursor para ejecutar consultas SQL dentro de su programa Python. Aquí se explica cómo crear un cursor:

cursor = conn.cursor()# Close the cursorcursor.close()

Puede crear un cursor llamando al método cursor() en un objeto de conexión abierto.

Cómo ejecutar una transacción de base de datos en Python

Con un cursor, puede ejecutar sentencias, consultas o scripts SQL para leer o escribir datos o modificar la estructura de la base de datos.

Hay tres métodos principales que puede utilizar para ejecutar una transacción de base de datos.

  1. Cursor.ejecutar . Este método ejecutará una única declaración SQL. Así es como se usa: este código llama al método de ejecución en un cursor y le pasa una cadena que contiene una declaración SQL. cursor.execute(""" CREATE TABLE IF NOT EXISTS users ( name TEXT, age INTEGER )""")
  2. Cursor.executemany . Este método le permite ejecutar la misma instrucción SQL más de una vez, con parámetros diferentes cada vez. Se necesitan dos argumentos: la declaración SQL y un iterable. Un buen uso es insertar varios objetos en la base de datos a la vez: el código anterior utiliza el método ejecutar muchos para insertar valores en la base de datos varias veces.
    data = [ ('Alice', 25), ('Bob', 30), ('Charlie', 22)]cursor.executemany("""INSERT INTO users (name, age) VALUES (?,?)""", data)

    Tenga en cuenta el ? marcadores de posición en la declaración SQL. El método ejecutar muchos los reemplazará con los valores correspondientes para cada objeto.

  3. Cursor.executescript . Como sugiere el nombre, este método ejecutará un script SQL por usted. Puede escribir sus declaraciones SQL en un archivo diferente y ejecutarlas con el método de ejecución : with open("path/to/script.sql") as file: sql_script = file.read()cursor.executescript(sql_script)

Cómo crear una aplicación de registro con Python y SQLite3

La lógica detrás de una aplicación de registro implica obtener la información del usuario con Python y almacenarla en una base de datos. Estos pasos le mostrarán cómo crear un sistema de registro simple con Python y SQLite3.

Paso 1: conectarse a una base de datos existente o crear una nueva

Comience creando una base de datos para su aplicación o conectándose a una existente:

import sqlite3conn = sqlite3.connect('database.db')cursor = conn.cursor()# your app's code goes herecursor.close()conn.close()

El código anterior crea un objeto de conexión y un cursor para interactuar con la base de datos conectada.

Paso 2: crear una tabla para usuarios

Necesita una tabla para almacenar los datos que los usuarios proporcionarán al registrarse. Aquí se explica cómo crear uno con el cursor:

cursor.execute(""" CREATE TABLE IF NOT EXISTS users ( first_name TEXT, last_name TEXT, email TEXT UNIQUE, password TEXT )""")conn.commit()

Este código creará una tabla llamada usuarios si no existe en su base de datos. Crea cuatro columnas en la tabla para contener información del usuario. El campo de correo electrónico es único para evitar que los usuarios creen varias cuentas con el mismo correo electrónico.

La llamada a conn.commit es importante para enviar la consulta a la base de datos. Sin él, no habrá cambios en la base de datos.

Si usa el método de ejecución, puede agregar la palabra clave COMMIT al final de su archivo SQL, para no tener que llamar a conn.commit.

Paso 3: recopilar datos del usuario

Las funciones de Python facilitan la reutilización del código , por lo que es una buena idea crear una función para manejar la función de registro. Esta función recopila el nombre, apellido, correo electrónico y contraseña del usuario.

def register_user(): first_name = input("Enter your first name: ") last_name = input("Enter your last name: ") email = input("Enter your email: ") password1 = input("Enter your password: ") password2 = input("Confirm your password: ")

Paso 4: Verifique la exactitud de la contraseña

Modifique la función Register_user para garantizar que el usuario ingrese la misma contraseña dos veces. Si no lo hacen, debe solicitarles que vuelvan a ingresar la contraseña. Puedes lograrlo con un bucle como este:

def register_user(): first_name = input("Enter your first name: ") last_name = input("Enter your last name: ") email = input("Enter your email: ") while True: password1 = input("Enter your password: ") password2 = input("Confirm your password: ") # Check password correctness if password1 == password2: print("You have successfully registered!") break else: print("Your passwords must match")

Con este cambio, un usuario no puede registrarse a menos que sus contraseñas coincidan.

Paso 5: Verifique la unicidad del correo electrónico

La declaración SQL que crea la tabla de usuarios define el campo de correo electrónico como único. Esto significa que la base de datos devolverá un error si un usuario se registra con un correo electrónico que ya existe. Para actuar apropiadamente, necesitas manejar la excepción de Python :

def register_user(): first_name = input("Enter your first name: ") last_name = input("Enter your last name: ") while True: email = input("Enter your email: ") password1 = input("Enter your password: ") password2 = input("Confirm your password: ") # Check password correctness if password1 == password2: try: print("You have successfully created an account.") break except sqlite3.IntegrityError: print("Error: This email is already registered.") else: print("Your passwords must match.")

Este código utiliza el bloque try-except para manejar el error que ocurrirá por correos electrónicos duplicados. Si la base de datos arroja un IntegrityError, el ciclo while continuará y solicitará al usuario que ingrese una dirección de correo electrónico diferente.

Para esta aplicación de muestra, es seguro asumir que un IntegrityError solo ocurrirá como resultado de una dirección de correo electrónico duplicada. En una aplicación real, probablemente utilizará un manejo de errores más avanzado para solucionar otros problemas que puedan ocurrir.

Paso 6: Insertar los datos del usuario en la base de datos

Ahora que ha recopilado y verificado los datos del usuario, es hora de agregarlos a la base de datos. Puede utilizar una consulta SQL para hacerlo. Modifica tu bloque try-except de esta manera:

try: cursor.execute(""" INSERT INTO users (first_name, last_name, email, password) VALUES (?,? ,? ,?) """, (first_name, last_name, email, password2)) conn.commit() print("You have successfully created an account.") breakexcept sqlite3.IntegrityError: print("Error: This email is already registered.")

En el bloque try-except modificado, el cursor ejecuta una operación de inserción SQL. Finalmente, el método conn.commit confirma la operación SQL en la base de datos.

Si siguió todos los pasos anteriores, debería tener una aplicación que registre a los usuarios y los guarde en la base de datos. Puede utilizar una aplicación como DB Browser para SQLite para ver el contenido de su base de datos:

La aplicación DB Browser para SQLite que muestra un único registro de usuario en una tabla de base de datos.

Usar bases de datos en lugar de tipos de colecciones

Para bases de datos simples, puede que le resulte más fácil crear su propio código. Sin embargo, a medida que su aplicación crece y su base de datos se vuelve más compleja, considere usar una herramienta como Django ORM para simplificar la tarea.

Para continuar practicando sus habilidades con bases de datos de bajo nivel, intente implementar un sistema de inicio de sesión para complementar el programa de registro.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *