Fundamentos de la conexión a bases de datos en Python
Trabajar con bases de datos es una parte esencial de cualquier programa moderno. Almacenar, recuperar y gestionar datos te permite crear aplicaciones completas, desde scripts simples hasta servicios web complejos.
En Python existen múltiples formas de trabajar con bases de datos. En este artículo analizaremos en detalle cómo conectar una base de datos usando el módulo sqlite3. También veremos el uso del formato JSON para guardar datos con json.dump. Exploraremos los aspectos clave de ambas tecnologías.
¿Por qué usar bases de datos en tus proyectos?
Si tus programas manejan datos que necesitas conservar entre ejecuciones, una base de datos es indispensable. La base de datos SQLite en Python ofrece una solución confiable para almacenar información.
Ventajas de usar bases de datos
Incorporar bases de datos en tus proyectos de Python te brinda los siguientes beneficios:
• Almacenamiento cómodo de datos estructurados • Acceso rápido y filtrado de información • Gestión centralizada de datos • Garantía de integridad de los datos • Posibilidad de crear copias de seguridad • Escalabilidad de la solución
Trabajar con SQLite en Python
SQLite es la opción ideal para proyectos pequeños. Se integra directamente en la aplicación, no requiere un servidor separado y trabaja con archivos de formato .db.
Conexión a una base de datos SQLite
El módulo sqlite3 viene incluido en la biblioteca estándar de Python, por lo que no necesitas instalar nada adicional.
import sqlite3
# Conectar a la base de datos (si el archivo no existe, se crea automáticamente)
conn = sqlite3.connect('ejemplo.db')
# Crear un cursor para ejecutar consultas SQL
cursor = conn.cursor()
Al conectarte a una base de datos que no existe, el archivo se crea automáticamente. Esto facilita el trabajo con proyectos nuevos.
Crear una tabla en la base de datos
Antes de agregar datos, debes definir la estructura de la tabla. Usa el comando SQL CREATE TABLE:
cursor.execute('''
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nombre TEXT NOT NULL,
edad INTEGER
)
''')
conn.commit()
La cláusula IF NOT EXISTS evita errores si la tabla ya existe. PRIMARY KEY AUTOINCREMENT asigna identificadores únicos automáticamente.
Insertar datos en la tabla
Para insertar datos se usa el comando INSERT INTO. Se recomienda usar consultas parametrizadas para protegerte contra inyecciones SQL:
cursor.execute('''
INSERT INTO usuarios (nombre, edad) VALUES (?, ?)
''', ('Ana', 30))
# Insertar varios registros a la vez
datos_usuarios = [
('Carlos', 25),
('María', 35),
('David', 40)
]
cursor.executemany('''
INSERT INTO usuarios (nombre, edad) VALUES (?, ?)
''', datos_usuarios)
conn.commit()
El método executemany permite agregar múltiples registros de forma eficiente en una sola operación.
Leer y extraer datos
Para recuperar datos existen varios métodos, según la cantidad de registros que necesites:
# Obtener todos los registros
cursor.execute('SELECT * FROM usuarios')
todas_filas = cursor.fetchall()
for fila in todas_filas:
print(fila)
# Obtener un solo registro
cursor.execute('SELECT * FROM usuarios WHERE edad > ?', (30,))
una_fila = cursor.fetchone()
print(una_fila)
# Obtener varios registros
cursor.execute('SELECT nombre, edad FROM usuarios ORDER BY edad')
algunas_filas = cursor.fetchmany(2)
for fila in algunas_filas:
print(f"Nombre: {fila[0]}, Edad: {fila[1]}")
Actualizar y eliminar datos
Para modificar registros existentes se usan los comandos UPDATE y DELETE: