sqlite-utils 4.0rc2: Escrito por Claude Fable, $149.25, corrige un error de pérdida de datos

Simon Willison lanzó sqlite-utils 4.0rc2, una biblioteca de Python para SQLite, escrita mayoritariamente por Claude Fable. El costo total: alrededor de $149.25 en tarifas de API durante 37 prompts y 34 commits, cambiando +1,321 -190 líneas en 30 archivos.
Qué cambió
La versión candidata corrige un bug crítico de pérdida de datos en Table.delete_where() — antes, nunca hacía commit, dejando la conexión en transacción y envenenando todas las escrituras posteriores. Aquí la reproducción del análisis de Fable:
db = sqlite_utils.Database("dw.db")
db["t"].insert_all([{"id": i} for i in range(3)], pk="id")
db["t"].delete_where("id = ?", [0])
# conn.in_transaction ahora es True
db["t"].insert({"id": 50})
db["u"].insert({"a": 1})
db.close()
# Reabrir: las filas son [0, 1, 2] — el borrado, la fila 50 Y la tabla u han desaparecido.
Willison califica esto como un “bug realmente malo” y se alegra de que Fable lo haya detectado antes del lanzamiento estable de la versión 4.0.
Nuevo modelo de transacciones
Cada método de escritura (insert(), upsert(), update(), delete(), delete_where(), transform(), create_table(), enable_fts(), etc.) ahora se ejecuta dentro de su propia transacción y hace commit antes de devolver el control. No se necesita commit() manual.
Dos excepciones:
- Usa
db.atomic()para agrupar múltiples operaciones de forma atómica - Si abres una transacción con
db.begin(), la biblioteca nunca hará commit — tú controlas el commit
Soporte de autocompat para Python 3.12+
Fable también aseguró la compatibilidad con el nuevo modo sqlite3.connect(..., autocommit=True|False) de Python 3.12. Las transacciones automáticas por método de la biblioteca están diseñadas para el modo de conexión predeterminado, y Fable parcheó el conjunto de pruebas para que pasen con la nueva configuración de autocommit.
Proceso de revisión
Willison comenzó el trabajo en su iPhone a través de Claude Code para web, luego cambió a una laptop para la revisión final mediante PRs de GitHub. Dice que revisar primero las ediciones de documentación es una excelente manera de entender qué cambió. Una revisión final con GPT-5.5 detectó casos extremos adicionales — la transcripción completa del PR está compartida.
Para quién es
Desarrolladores de Python que usan sqlite-utils para operaciones ligeras de base de datos y quieren una versión 4.0 lista para producción con seguridad de transacciones adecuada.
📖 Lee la fuente completa: HN AI Agents
👀 Ver también

Servidor MCP Nakkas Genera SVGs Animados a partir de Descripciones de IA
Nakkas es un servidor MCP donde la IA construye configuraciones completas de SVG animados a partir de descripciones, generando SVG animados limpios con formas, degradados, animaciones y filtros. Admite curvas paramétricas, 15 preajustes de filtro, animaciones CSS @keyframes y SMIL, y funciona en cualquier lugar donde se renderice SVG.

Pérdida de datos de la sesión de Claude Code: Script de respaldo para Windows y Mac
Usuarios reportan pérdida silenciosa de datos de sesión en Claude Code. Aquí un script de respaldo automático y gratuito para Windows y Mac usando PowerShell y launchd.

Recuerdo: Memoria de proyecto local para Claude Code — Sin gastar tokens en resúmenes
Recall le da a Claude Code una memoria de sesión local duradera mediante resumen clásico. Sin clave API, sin modelo externo: context.md tiene ~1-2K tokens, construido offline con ganchos de sesión.

Sandra: MCP de memoria gráfica persistente de código abierto para Claude
Sandra es un backend de memoria de grafos + vectores con un servidor MCP nativo que le da a Claude memoria estructurada persistente entre sesiones, compatible con búsqueda exacta, difusa y semántica.