Trabajar con SQLite en Python: guía completa para desarrolladores principiantes y avanzados
Trabajar con bases de datos es una de las tareas más importantes al desarrollar aplicaciones. Si necesitas una solución ligera e integrada sin instalar servidores adicionales, SQLite es perfecto para ti.
Combinado con Python, gracias al módulo estándar sqlite3, puedes crear, modificar y gestionar bases de datos directamente desde tu código de forma rápida. En este artículo aprenderás a conectarte a SQLite, realizar inserciones (INSERT), actualizaciones (UPDATE) y mucho más.
¿Qué es SQLite y por qué elegirlo?
SQLite es una base de datos relacional embebida que almacena toda la información en un solo archivo. No requiere un servidor independiente y es ideal para prototipos, proyectos pequeños y aplicaciones móviles.
SQLite se utiliza ampliamente en diversas áreas del desarrollo de software. Muchas aplicaciones populares, como navegadores, mensajeros y apps móviles, usan SQLite para el almacenamiento local de datos.
Ventajas de SQLite
- No requiere instalación de servidor
- Alta velocidad de operación
- Facilidad de uso
- Excelente integración con Python mediante el módulo sqlite3
- Multiplataforma y portabilidad
- Soporte de transacciones ACID
- Mínimo consumo de recursos
Limitaciones de SQLite
- No soporta escrituras simultáneas de múltiples usuarios
- Rendimiento limitado con grandes volúmenes de datos
- Sin replicación integrada
- Capacidades limitadas para aplicaciones multiusuario complejas
Conexión a una base de datos SQLite en Python
Conexión básica
import sqlite3
# Conexión a la base de datos (si el archivo no existe, se crea)
conn = sqlite3.connect('mi_base_de_datos.db')
# Creación del cursor para ejecutar consultas SQL
cursor = conn.cursor()
Conexión a una base de datos en memoria
Para almacenamiento temporal o pruebas, puedes usar una base de datos en memoria:
conn = sqlite3.connect(':memory:')
Configuración de parámetros de conexión
conn = sqlite3.connect('mi_base_de_datos.db', timeout=10)
conn.execute('PRAGMA foreign_keys = ON') # Activar claves foráneas
Creación de tablas en SQLite
Creación de una tabla simple
cursor.execute('''
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nombre TEXT NOT NULL,
edad INTEGER
)
''')
conn.commit()
Creación de una tabla con restricciones adicionales
cursor.execute('''
CREATE TABLE IF NOT EXISTS productos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nombre TEXT NOT NULL UNIQUE,
precio REAL CHECK(precio > 0),
categoria TEXT DEFAULT 'sin_categoria',
creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
conn.commit()
Creación de índices para optimización
cursor.execute('''
CREATE INDEX IF NOT EXISTS idx_usuarios_nombre ON usuarios(nombre)
''')
conn.commit()
Inserción de datos en la tabla — python sqlite3 insert
Inserción de un solo registro
Una de las consultas más comunes es cómo insertar datos en una tabla SQLite:
cursor.execute('''
INSERT INTO usuarios (nombre, edad) VALUES (?, ?)
''', ('Carlos', 30))
conn.commit()
El uso de signos de interrogación protege contra inyecciones SQL y es el enfoque recomendado.
Inserción masiva de datos
usuarios = [('Ana