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
Paint.NET reescribe Direct2D con Claude: 180.000 líneas
Rick Brewster ha sustituido Direct2D en Paint.NET por una reimplementación de 180.000 líneas escrita con Claude, y admite que no la ha revisado entera.
El manifiesto anti IA que apenas movió Hacker News
Un manifiesto anti IA publicado en Hacker News se quedó en 2 puntos y 1 comentario. Repasamos el género, por qué ya no genera debate y qué objeciones siguen siendo válidas.
NamingCube: generar nombres y comprobar si están libres
NamingCube genera nombres con IA y comprueba si están libres. La parte interesante no es generar: es verificar dominios, handles y marcas registradas.