Simon Willison’s Weblogは2026年6月21日(現地時間)、PythonライブラリおよびCLIツールの最新リリース候補版である「sqlite-utils 4.0rc1」を発表した。今回のリリースには、データベースマイグレーション機能と、SQLiteのネストされたトランザクションを容易にするdb.atomic()機能が新たに導入された。以前のバージョンと比較して、後方互換性のないいくつかの変更が含まれており、安定版リリース前の試用が求められている。
sqlite-utilsは、Pythonのデフォルトsqlite3パッケージ上で高度な操作を提供する、SQLiteデータベース向けの統合されたPythonライブラリおよびCLIツールである。複雑なテーブル変換やJSONデータからの自動テーブル作成などの機能を提供している。
新機能の一つであるデータベースマイグレーションは、数年前にリリースされたsqlite-migrateパッケージの修正版が移植されたもの。これにより、データベーススキーマの変更をコードで定義し、Pythonコードまたはコマンドラインのsqlite-utils migrateコマンドを通じて適用できる。既存のcreaturesテーブルの作成やweightカラムの追加といった操作例が示されている。
もう一つの主要な新機能は、db.atomic()トランザクションである。これはSQLiteがサポートするセーブポイント形式のネストされたトランザクションを簡素化する抽象化であり、DjangoやPeeweeで使われる「atomic」という用語から着想を得ている。この機能により、複数のデータベース操作を一つのアトミックな単位として扱い、エラー発生時のロールバックを容易にできる。
バージョン4では、後方互換性のない変更がいくつか導入された。主な変更点として、SQLite 3.23.1以降でのupsert操作がINSERT ... ON CONFLICT SET構文を使用するようになったこと、Python 3.8のサポートが終了しPython 3.13が追加されたこと、sqlite-utils tuiがプラグインsqlite-utils-tuiによって提供されるようになったことなどが挙げられる。また、db.table()メソッドはテーブル専用となり、ビューにはdb.view()を使う必要がある。浮動小数点カラムのデフォルト型がFLOATからREALに変更され、テーブルやカラム名がdouble-quotesでラップされるようになった。CSVやTSVデータインポート時の型検出がデフォルトの挙動となった。
sqlite-utils 4.0rc1はpip install sqlite-utils==4.0rc1またはuvx --with sqlite-utils==4.0rc1 sqlite-utils --helpでインストール可能であり、DiscordチャンネルまたはGitHub Issuesを通じてフィードバックが募集されている。
参考: Simon Willison’s Weblog — 2026年6月22日 08:35 (JST)
原文ハイライト"sqlite-utils 4.0rc1 adds migrations and nested transactions"