Simon Willison 氏は sqlite-utils 4.0rc1 をリリースしました。これは v4 バージョンの最初のリリース候補です。sqlite-utils は Python ライブラリと CLI ツールを兼ねた SQLite データベース操作ツールで、Python 標準の sqlite3 パッケージの上に高度な操作(複雑なテーブル変換、JSON データからの自動テーブル作成など)を提供します。
今回の RC では、以前の 4.0 alpha 版から 2 つの大きな新機能が追加されました。1 つ目はデータベースマイグレーションのサポートです。これは数年前にリリースされた sqlite-migrate パッケージを若干修正して移植したもので、長年にわたり LLM など様々なプロジェクトで使用されてきた実績があります。migrations.py ファイルでマイグレーションを定義し、Python コードまたは sqlite-utils migrate コマンドで実行します。逆マイグレーションは提供されず、エラーは新しいマイグレーションで修正する設計です。
2 つ目はネストトランザクションのサポートです。db.atomic() コンテキストマネージャを使用することで、SQLite のセーブポイントを活用したネストされたトランザクションを簡単に扱えます。従来はユーザーが直接トランザクション管理を行う必要がありましたが、この新機能により内部トランザクションのみをロールバックするといった柔軟な制御が可能になります。
v4 では互換性のない変更もいくつか含まれています。例えば、upsert 操作は SQLite 3.23.1 以降で INSERT ... ON CONFLICT SET 構文を使用するようになりました(従来は INSERT OR IGNORE と UPDATE の組み合わせ)。デフォルトの浮動小数点型は FLOAT から REAL に変更、テーブル名とカラム名はスキーマ内で角括弧から二重引用符で囲む形式に変更、Python 3.8 のサポートを終了し Python 3.13 を追加、CSV/TSV インポート時の型検出がデフォルトで有効になりました。一部の旧動作はパラメータで復元可能です。
インストールは pip install sqlite-utils==4.0rc1 で行えます。問題があれば Discord または GitHub Issues で報告してください。