sqlite-utils 4.0rc2: Написан Клодом Фейблом, $149.25, исправляет ошибку потери данных

Саймон Уиллисон выпустил sqlite-utils 4.0rc2 — Python-библиотеку для SQLite, написанную в основном Клодом Фейблом. Общая стоимость: около $149,25 в виде платы за API, 37 промптов и 34 коммита, изменения затронули +1 321 -190 строк в 30 файлах.
Что изменилось
Кандидат в релизы исправляет критическую ошибку потери данных в Table.delete_where() — ранее он никогда не делал коммит, оставляя соединение в транзакции и отравляя все последующие записи. Вот воспроизведение из анализа Фейбла:
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 теперь True
db["t"].insert({"id": 50})
db["u"].insert({"a": 1})
db.close()
# Открываем заново: строки [0, 1, 2] — удаление, строка 50 И таблица u исчезли.
Уиллисон называет это «очень плохой ошибкой» — он рад, что Фейбл поймал её до стабильного релиза 4.0.
Новая модель транзакций
Каждый метод записи (insert(), upsert(), update(), delete(), delete_where(), transform(), create_table(), enable_fts() и т.д.) теперь выполняется в собственной транзакции и делает коммит перед возвратом. Ручной commit() не требуется.
Два исключения:
- Используйте
db.atomic()для группировки нескольких операций в одну атомарную - Если вы открываете транзакцию с
db.begin(), библиотека никогда не сделает коммит — управление коммитом полностью за вами
Поддержка автокоммита Python 3.12+
Фейбл также обеспечил совместимость с новым режимом sqlite3.connect(..., autocommit=True|False) в Python 3.12. Автоматические транзакции библиотеки для каждого метода рассчитаны на режим подключения по умолчанию, и Фейбл доработал тестовый набор, чтобы он проходил с новыми настройками автокоммита.
Процесс проверки
Уиллисон начал работу на своём iPhone через Claude Code for web, затем переключился на ноутбук для финальной проверки через GitHub PR. Он говорит, что сначала просматривать правки документации — отличный способ понять, что изменилось. Финальная проверка GPT-5.5 выявила дополнительные пограничные случаи — полная стенограмма PR опубликована.
Для кого это
Python-разработчики, использующие sqlite-utils для лёгких операций с базами данных и желающие получить готовый к продакшену релиз 4.0 с надёжной обработкой транзакций.
📖 Источник: HN AI Agents
👀 Смотрите также

SuperContext: Фреймворк постоянной памяти для AI-агентов программирования
SuperContext — это фреймворк с открытым исходным кодом, который предоставляет инструментам ИИ для программирования, таким как Claude, постоянную память через структурированные, целевые файлы вместо больших инструкций. Он включает исполняемый промпт, который собирает систему примерно за 10 минут без ручной настройки.

MCP как интерфейс наблюдаемости: подключение ИИ-агентов к точкам трассировки ядра
Протокол контекста модели (MCP) становится интерфейсом между ИИ-агентами и данными инфраструктуры, при этом Datadog выпускает MCP-сервер, а Qualys отмечает проблемы безопасности. В статье рассматриваются два подхода: обёртывание существующих платформ или создание нативной для MCP системы мониторинга, которая подключается напрямую к точкам трассировки ядра.

Каскадный граф: Интерактивная карта энергетических ограничений ИИ и узких мест в цепочке поставок
Каскадный граф — это направленный граф знаний физической экономики, отображающий 405 узлов (драйверы, узкие места, географии, тикеры), соединённых 597 обоснованными рёбрами, чтобы проследить, как структурное давление каскадно распространяется от ограничений энергии и физики до инвестируемых активов.

SimplePDF Copilot: клиентский AI-инструмент для заполнения PDF-форм
SimplePDF Copilot использует вызов инструментов на стороне клиента, чтобы позволить LLM заполнять поля, добавлять поля, удалять страницы и многое другое в PDF-файлах — без того, чтобы PDF покидал браузер.