sqlite-utils 4.1 permite insertar filas con código Python
La versión 4.1 de sqlite-utils suma una opción --code que permite generar las filas a insertar con un bloque de código Python, sin pasar antes por un fichero intermedio.
Simon Willison publicó el 11 de julio la versión 4.1 de sqlite-utils, apenas cuatro días después de la 4.0. Es un dot-release pequeño, sin cambios que rompan compatibilidad, pero trae una novedad concreta para quien usa la herramienta a diario: ahora puedes generar las filas a insertar con código Python en lugar de partir siempre de un fichero.
sqlite-utils es la librería y CLI de Willison para crear y manipular bases de datos SQLite sin escribir SQL a mano. La usa mucha gente para montar pipelines pequeños, convertir CSV en tablas consultables o preparar datasets antes de exponerlos a otras herramientas.
Qué ha cambiado en la 4.1
Los comandos `sqlite-utils insert` y `sqlite-utils upsert` aceptan ahora una opción `--code`. Con ella pasas un bloque de código Python, o la ruta a un fichero `.py`, que define una función `rows()` o un iterable `rows` con las filas a insertar. Es una alternativa directa a importar los datos desde JSON, CSV o TSV, que era el flujo estándar hasta esta versión. La opción admite tanto código en línea como un fichero externo, según prefieras tenerlo todo en el comando o reutilizar un script.
El detalle está en que ya no necesitas materializar un fichero intermedio cuando los datos proceden de un cálculo, de una llamada a una API o de una transformación en memoria. Escribes el Python que produce las filas y sqlite-utils se encarga de meterlas en la tabla. El cambio llegó a través del issue #684 y aparece recogido en las notas de la release.
Por qué encaja con el resto de la herramienta
No es una idea nueva dentro del proyecto. sqlite-utils ya dejaba pasar bloques de Python como argumento de la CLI en otros comandos, por ejemplo en `convert`, que aplica una función a los valores de una columna existente. La opción `--code` extiende esa misma lógica a la fase de inserción. La consecuencia es menos ficheros temporales y más scripting directo, algo que se nota sobre todo cuando encadenas comandos en Bash o los lanzas desde un cron.
Para quién es útil
El público natural es quien ya vive en la terminal: gente que arma ingestas rápidas, analistas que trabajan con SQLite como formato de trabajo y desarrolladores que prefieren un one-liner a un script completo. Si tus datos ya están en un fichero limpio, seguirás usando el import de siempre; `--code` gana cuando la fuente es dinámica y montar el fichero intermedio era puro trámite. Un caso típico es rellenar una tabla de prueba con datos generados al vuelo, o volcar el resultado de recorrer un directorio sin escribir antes un CSV.
Hay además un ángulo que nos toca de cerca. Las bases SQLite son un sustrato muy común para datos locales que luego acaban consultando modelos y agentes, ya sea vía MCP o desde un subagente que ejecuta consultas. Poder construir una tabla en un solo comando, a partir de Python arbitrario, simplifica esa fase de preparación previa que casi nunca se documenta pero siempre está.
Contexto
La 4.0 salió el 7 de julio y la 4.1 apenas cuatro días después. Ese ritmo, versiones pequeñas y seguidas, es marca de la casa en el ecosistema de Datasette y sqlite-utils: cada release resuelve una fricción puntual en vez de acumular cambios grandes. Willison mantiene el proyecto en abierto en GitHub y documenta cada opción en la referencia de la CLI.
En ClaudeWave llevamos tiempo usando sqlite-utils para dejar datasets listos antes de conectarlos a flujos con Claude, y este tipo de mejora encaja con esa forma de trabajar. No es un cambio vistoso, pero quitar el fichero intermedio es de esas cosas que se agradecen a la tercera vez que las usas. A veces la buena herramienta es la que te ahorra un paso que ni sabías que sobraba.
Fuentes
Seguir leyendo
sqlite-utils 4.0rc3: claves foráneas compuestas antes de la versión estable
Simon Willison publica sqlite-utils 4.0rc3 con claves foráneas compuestas y columnas insensibles a mayúsculas, dos cambios que retrasan la esperada versión 4.0 estable.
sqlite-utils 4.0rc2: Claude Fable escribe casi toda la release por 149 dólares
El creador de Datasette encarga a Claude Fable la revisión final de sqlite-utils 4.0: el modelo detectó cinco release blockers y escribió casi toda la rc2 por unos 149 dólares.
Current AI publica el Gap Map del open source de IA
Current AI cataloga 421 proyectos de IA de código abierto en su Gap Map y admite 24.400 artefactos sin clasificar. Un mapa que mide las brechas, no los logros del open source.