sqlite-utils 4.1 は、4.0 リリースからわずか数日後に公開された最初のドットリリースであり、いくつかの便利な新機能をもたらしています。最も注目すべきは、insert および upsert コマンドに追加された --code オプションです。これにより、ユーザーはコマンドライン上で直接 Python コードブロック(または .py ファイルへのパス)を記述し、rows() 関数や rows イテラブルを定義してデータ行を生成できるようになりました。これは従来からある convert コマンドのコードブロック機能の自然な拡張です。
もう一つの実用的な追加は --type オプションです。CSV や TSV のインポート時に自動的に選択される列タイプを上書きできます。例えば、郵便番号のように整数に見えても先頭のゼロを保持するために TEXT として保存したい場合に便利です。これは長年の機能要望でしたが、実装は驚くほどシンプルでした。
インデックス管理に関しては、新しい table.drop_index(name) メソッドと sqlite-utils drop-index コマンドが追加され、名前を指定してインデックスを削除できるようになりました。存在しないインデックスを無視する ignore=True/--ignore オプションもサポートしています。また、sqlite-utils query コマンドは、クエリの代わりに - を渡すことで標準入力から SQL を読み取れるようになりました(例:echo "select * from dogs" | sqlite-utils query dogs.db -)。
upsert 操作では、既存テーブルの主キーを自動推論するようになったため、主キーが設定済みのテーブルに対して upsert を実行する際に --pk を省略できます。これは Codex が提案した改善で、4.0 で追加された Python ライブラリの機能を CLI に反映したものです。
最も重要な新機能は、table.transform() および table.transform_sql() メソッドで strict=True または strict=False を受け付け、テーブルの SQLite STRICT モードを変更できるようになったことです。このオプションを省略すると既存のモードが維持されます。対応する sqlite-utils transform コマンドにも --strict と --no-strict オプションが追加されました。この機能は Evan Hahn の「Prefer STRICT tables in SQLite」という記事に触発されました。著者は GPT-5.6 Sol xhigh Codex を使用して実装し、自動テストだけでなく手動テストを指示することで2つの軽微な問題を発見・修正しました。