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

✍️ OpenClawRadar📅 Publicado: 5 de julio de 2026🔗 Source
sqlite-utils 4.0rc2: Escrito por Claude Fable, $149.25, corrige un error de pérdida de datos
Ad

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
Ad

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

Ad

👀 Ver también