Cree esta aplicación para aprender a crear una tabla de base de datos y completarla con 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
Puede encontrar el código utilizado para este tutorial en este repositorio de GitHub
Para crear e interactuar con una base de datos en Python, necesita dos cosas principales: 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) database
conn = sqlite3.connect('path/to/database.db')
# Close the connection
conn.close()
El
conectar() El método 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 cursor
cursor.close()
Puede crear un cursor llamando al cursor() método en un objeto de conexión abierta.
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.
-
Cursor.ejecutar. Este método ejecutará una única declaración SQL. Así es como lo usas:
Este código llama al ejecutar método en un cursor, pasándole una cadena que contiene una declaración SQL.cursor.execute(
CREATE TABLE IF NOT EXISTS users (
name TEXT,
age INTEGER
)
) -
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 ejecutar muchos Método 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)
Nota la ? marcadores de posición en la declaración SQL. El método ejecutar muchos los reemplazará con los valores correspondientes para cada objeto.
-
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 ejecutar script método:
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 sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
# your app's code goes here
cursor.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.
el llamado a conn.commit Es importante 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.
defregister_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
Modificar el registrar_usuario función 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:
defregister_user():
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")
email = input("Enter your email: ")whileTrue:
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 es necesario manejar la excepción de Python:
defregister_user():
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")whileTrue:
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. Puedes usar 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.")
break
except 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 conn.commit El método 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. Puedes usar una aplicación como Navegador de base de datos para SQLite para ver el contenido de su 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.