sqlite-utils 4.1 aggiunge --code per generare righe e --type per forzare tipi
Testo scritto con l’intelligenza artificiale a partire da una fonte citata, senza revisione umana prima della pubblicazione.
La release 4.1 introduce l'opzione --code per passare blocchi Python che producono righe e --type per salvare colonne con il tipo desiderato.
sqlite-utils 4.1 introduce due opzioni nella CLI: --code per generare righe con Python e --type per imporre i tipi di colonna in fase di creazione tabella1.
Il post su simonwillison.net, datato 11 luglio 2026, spiega che insert e upsert ora accettano --code. L’opzione prende un blocco di Python passato inline oppure il percorso a un file .py. Il codice deve esporre una funzione rows() o un iterable rows che producano i record. La novità risponde all’issue #6841.
Esempio nel post: sqlite-utils insert data.db creatures --code ' def rows(): yield {"id": 1, "name": "Cleo"} yield {"id": 2, "name": "Suna"} ' --pk id Il comando genera due righe dalla CLI e imposta la chiave primaria con --pk id. La stessa sintassi vale con upsert1.
Lo strumento già accettava blocchi di codice in altri comandi. Per convert, l’esempio è: sqlite-utils convert content.db articles headline ' def convert(value): return value.upper()' Permettere a blocchi di Python di generare righe nuove viene descritto come “una ovvia estensione” di quel modello1.
Seconda novità: le subcommand insert e upsert accettano ora --type column-name type. L’opzione forza il tipo della colonna quando sqlite-utils crea la tabella, evitando l’inferenza automatica. Il post cita il caso di CSV o TSV con codici postali. Possono sembrare numeri, ma conviene salvarli come TEXT per preservare gli zeri iniziali. Il riferimento è l’issue #1311.
L’autore definisce la richiesta “di lunga data” e nota che l’implementazione è stata semplice. L’effetto pratico: si controlla il risultato fin dall’inserimento, senza aggiustamenti sui tipi a posteriori1.
Le due aggiunte si inseriscono nel solco della CLI di sqlite-utils, che consente di iniettare logica Python nei comandi per trasformare o creare dati. Con --code si possono produrre righe al volo senza scrivere script separati o doverle importare. Con --type si eliminano ambiguità comuni nei dataset delimitati, come numeri che in realtà devono restare stringhe testuali1.
Il post riporta esempi minimali e link alle issue che hanno guidato le modifiche. Per chi già usa convert con funzioni inline, la stessa ergonomia si estende a insert e upsert. Per chi importa CSV/TSV, la possibilità di bloccare il tipo al momento giusto riduce sorprese in lettura e query successive1.
Chiusura concreta nel testo: le due opzioni coprono casi quotidiani, generare dati programmaticamente e fissare i tipi, e arrivano direttamente da richieste tracciate nelle issue #684 e #1311.
Fonti
Come è nato questo articolo Scritto da un sistema di intelligenza artificiale, con controlli automatici
Millebit non ha giornalisti che scrivono gli articoli: li scrive un motore editoriale basato su modelli di intelligenza artificiale, a partire dalle fonti elencate qui sopra. Prima di uscire, ogni testo passa questi controlli:
- Fedeltà alle fonti. Un secondo passaggio toglie ogni affermazione che le fonti non sostengono.
- Anti-cliché. Un filtro scarta frasi fatte, enfasi e tic della prosa artificiale.
- Giudizio editoriale. Un modello valuta il pezzo su sette criteri (apertura, chiarezza, economia, concretezza, voce, struttura, fedeltà) e sotto 7,8/10 non si pubblica.
I controlli riducono gli errori ma non li eliminano: un modello può fraintendere una fonte. Per le decisioni importanti, risali alla fonte originale. Se trovi un errore, segnalacelo.
Per vedere Millebit nelle notizie principali di Google, aggiungilo alle tue fonti preferite. Oppure segui l’edizione di oggi, il feed RSS o La Sintesi.