Tienes facturas en una hoja de cálculo. Tres semanas después, ya no sabes cuál es la versión buena. O peor: necesitas cruzar datos de clientes con gastos y la fórmula se ha roto. Hay una alternativa que no cuesta nada, no necesita internet y la montas en cinco minutos. Se llama SQLite, y con la nueva versión de sqlite-utils (la 4.1) automatizar la entrada de datos desde Python es ridículamente fácil. Sin ETLs caros, sin suscripciones.

Sqlite-utils es una herramienta open source creada por Simon Willison. Su última actualización mete la opción --code, que te deja ejecutar código Python directamente al insertar datos. Para un autónomo o un negocio pequeño, esto significa que puedes escribir un script de diez líneas, volcar un CSV de facturas en una base de datos local y luego consultarla como quieras. Todo gratis, todo en tu ordenador.

Te explico qué es SQLite, cómo instalar sqlite-utils y cómo usar --code con un ejemplo práctico. Al final, tendrás un script adaptable para tu negocio y una tabla comparativa de costes frente a las alternativas de pago. Vamos al grano.

¿Qué es SQLite y por qué te debería importar?

SQLite es una base de datos ligera que viene instalada en casi todos los ordenadores y móviles. No necesita servidor, no hay que configurar nada: es un simple archivo. Lo usan aplicaciones como WhatsApp o Firefox para guardar datos localmente. Para ti, significa que puedes tener una base de datos relacional en tu portátil, sin depender de internet ni pagar un céntimo.

Con SQLite haces consultas SQL, creas tablas, índices... todo lo que harías con MySQL o PostgreSQL, pero sin la sobrecarga de administración. Y con sqlite-utils, además, interactúas con ella desde la línea de comandos o desde Python de forma muy sencilla.

Instalación de sqlite-utils en dos minutos

Necesitas Python 3.8 o superior. Si no lo tienes, instálalo desde python.org. Luego, abre una terminal y ejecuta:

code
pip install sqlite-utils

Ya está. Tienes la versión 4.1 con la funcionalidad --code. Para comprobarlo, escribe:

code
sqlite-utils --version

Tu primera automatización con --code: de CSV a base de datos en un paso

Imagina que tienes un archivo facturas.csv con columnas: fecha, cliente, importe, categoria. Quieres meterlo en una base de datos SQLite y añadir una columna con el IVA calculado. Antes necesitabas un script aparte o usar múltiples comandos. Ahora, con --code, lo haces en una sola línea.

El comando mágico:

code
sqlite-utils insert gastos.db facturas facturas.csv --csv --code 'def transform(row): row["iva"] = row["importe"] * 0.21; return row'

Explicación:

  • insert gastos.db facturas facturas.csv --csv: inserta los datos del CSV en la tabla facturas de la base de datos gastos.db.
  • --code 'def transform(row): ...': define una función Python que recibe cada fila como un diccionario, calcula el IVA y devuelve la fila modificada. Sqlite-utils ejecuta esta función por cada fila antes de insertarla.

Así de simple. Ahora puedes consultar la base de datos:

code
sqlite-utils query gastos.db "SELECT cliente, importe, iva FROM facturas WHERE categoria='material'"

Automatiza el registro de gastos semanal sin hojas de cálculo

Un caso real: cada viernes descargas un CSV del banco con los movimientos de la semana. Quieres clasificarlos y guardarlos en una base de datos para luego generar informes. Con sqlite-utils puedes crear un script que lo haga automáticamente.

Crea un archivo importar_gastos.py con este contenido:

code
import subprocess
import sys

csv_file = sys.argv[1]  # pasas el nombre del CSV como argumento
cmd = [
    "sqlite-utils",
    "insert",
    "gastos.db",
    "movimientos",
    csv_file,
    "--csv",
    "--code",
    "def transform(row): row['categoria'] = 'comida' if float(row['importe']) 

Ejecútalo cada semana:

code
python importar_gastos.py movimientos_semana.csv

En segundos, tus datos están en una base de datos consistente, listos para consultas. Adiós a las hojas de cálculo con fórmulas rotas y múltiples versiones.

Comparativa de costes: sqlite-utils vs alternativas

Las herramientas de automatización y bases de datos suelen tener costes recurrentes. Aquí una tabla con lo que pagarías al año por soluciones típicas frente a sqlite-utils.

HerramientaPrecio mensualCoste anualLimitaciones
sqlite-utils0 €0 €Requiere conocimientos básicos de terminal y Python. Local, sin acceso remoto nativo.
Airtable (plan Plus)20 €/mes240 €5.000 registros por base, 5 GB de archivos adjuntos.
Zapier (plan Starter)Recomendado19,99 €/mes239,88 €750 tareas al mes, solo automatizaciones simples.
Google Cloud SQL (instancia pequeña)~8 €/mes~96 €Requiere configuración de servidor, costes de tráfico extra.
Microsoft Access (parte de Microsoft 365)69 €/año (plan Personal)69 €Solo Windows, curva de aprendizaje, no automatizable fácilmente.
← Desliza para ver toda la tabla →

Con sqlite-utils, el coste es cero. La principal pega es que necesitas sentirte cómodo con la línea de comandos. Pero si manejas datos a diario, es una habilidad que renta aprender.

Preguntas frecuentes sobre sqlite-utils

¿Necesito saber programar para usar sqlite-utils?

Para tareas básicas como insertar un CSV, no. El comando insert funciona sin --code. Pero si quieres transformar datos sobre la marcha, necesitas escribir pequeñas funciones en Python. Nada complejo: con seguir los ejemplos de este artículo puedes adaptarlo.

¿Puedo compartir la base de datos con otros?

Al ser un archivo local, puedes copiarlo a una carpeta compartida o enviarlo por email. Para acceso multiusuario simultáneo no es ideal. Si necesitas eso, quizás una base de datos en la nube sea mejor, pero para uso personal o en equipo pequeño funciona perfectamente.

¿Qué pasa si mi CSV tiene errores?

Sqlite-utils mostrará un error y detendrá la inserción. Puedes usar la opción --ignore para saltar filas problemáticas, o --replace para sobrescribir registros existentes. La documentación oficial es muy clara.

¿Puedo automatizar esto para que se ejecute solo?

Sí. En Windows puedes usar el Programador de Tareas; en Mac/Linux, cron. Simplemente programa la ejecución de tu script Python una vez a la semana.

Empieza hoy mismo con tres comandos

Si has llegado hasta aquí, tienes todo lo necesario para dejar atrás las hojas de cálculo caóticas. Resumen de comandos para empezar ahora:

  1. pip install sqlite-utils (instala la herramienta)
  2. sqlite-utils insert mi_negocio.db clientes clientes.csv --csv (crea tu primera tabla desde un CSV)
  3. sqlite-utils query mi_negocio.db "SELECT * FROM clientes LIMIT 5" (comprueba que los datos están dentro)

Desde ahí, añade --code para transformaciones. En menos de diez minutos tendrás una base de datos funcional, gratis y bajo tu control total. Para profundizar, visita la página oficial de sqlite-utils y la documentación en PyPI. No hay excusa para no automatizar.