Intermédiaire·2 min·12 juillet 2026

sqlite-utils 4.1 : du Python inline dans tes requêtes

🎧 Résumé audio0:00 / 0:00
sqlite-utils laisse maintenant injecter du Python directement en CLI pour générer ou transformer des données.
sqlite-utils 4.1 : du Python inline dans tes requêtes

Pourquoi ça compte pour toi

Si tu manipules des données en ligne de commande (CSV, TSV, bases locales), tu peux automatiser des opérations complexes sans quitter le terminal ni écrire un script séparé. C'est du gain de productivité immédiat pour les pipelines de données artisanaux.

Ce qu'il faut retenir

  • 1.Passe du code Python avec --code pour générer des lignes à insérer, sans fichier externe
  • 2.Définis les types de colonnes (ZIP codes en TEXT, pas INTEGER) pour éviter les zéros tronqués
  • 3.Lis des requêtes SQL depuis stdin ou déduis la clé primaire automatiquement

Tu galères avec le jargon ?

Lis la version réécrite en mode débutant — toutes les idées, sans le jargon.

Pourquoi ça change ta vie (un peu)

Jusqu'ici, si tu voulais générer 10 000 lignes procédurales et les balancer dans SQLite, tu écrivais un .py complet, tu le lançais, tu vérifiais les résultats. Maintenant :

sqlite-utils insert data.db creatures --code '
def rows():
  yield {"id": 1, "name": "Cleo"}
  yield {"id": 2, "name": "Suna"}
' --pk id

C'est synchrone, lisible, et tu vois l'erreur tout de suite.

Les trois petits coups d'amélioration

1. Les types de colonne enfin maîtrisables

Tu charges un CSV avec des ZIP codes. SQLite les voit en entier : 01234. Mais depuis le début, il les stocke en INT et supprime le zéro. Avec --type, tu dis : « colonne ZIP = TEXT, pas INTEGER ».

sqlite-utils insert addresses.db data.csv --type zip_code TEXT

2. Supprimer un index sans crainte

Une commande drop-index toute simple, avec un --ignore pour ne pas planter si l'index n'existe pas. C'est bête, mais ça manquait.

3. Les requêtes depuis stdin

Tu pipes une requête SQL directement :

echo "select * from dogs" | sqlite-utils query dogs.db -

Parfait pour les scripts bash.

Le détail qui compte

Simon Willison a fait tester tout ça par une IA (Codex) en lui demandant explicitement de « débusquer des cas limites » hors des tests automatiques. Résultat : deux petits bugs découverts et corrigés. C'est un bon signal sur la qualité.

Le lancement inclut aussi un point sur les tables STRICT en SQLite (une nouvelle configuration qui impose un contrôle de type plus strict). Utile surtout si tu viens d'une vraie base de données et que tu veux SQLite plus rigoureux.

Et concrètement pour toi ?

Choisis ton profil — la lecture de l'article change selon qui tu es.

🔭 Curieux

Pour toi, comprendre que les outils deviennent des couches de langage : sqlite-utils montre comment Python se dissout dans le CLI pour les tâches répétitives. C'est un exemple de comment l'IA et les outils fusionnent, et pourquoi apprendre à « parler » aux machines (code, prompts, requêtes) devient une compétence de base.

Essayer maintenant

Installer sqlite-utils

Newsletters Noésis

3 minutes d'IA dans ta boîte mail, chaque matin.

Rejoins les francophones qui comprennent, essaient et progressent avec l'IA. Choisis ce que tu veux recevoir. Désabonnement en 1 clic.

Explorer les thèmes de cet article :