Last chance! 50% off DataCamp Premium
Sale ends in
Se conosci i sistemi di database relazionali, è probabile che tu abbia sentito parlare di colossi come MySQL, SQL Server o PostgreSQL. Tuttavia, SQLite è un altro utile RDBMS molto semplice da configurare e utilizzare, che offre diverse caratteristiche peculiari rispetto ad altri database relazionali. Queste includono:
Come per molte cose, però, ci sono anche alcune limitazioni di SQLite rispetto ad altri motori di database. Per esempio, SQLite non offre l'opzione per eseguire Right o Full Outer Join, e l'assenza di server può anche essere uno svantaggio per la sicurezza e la protezione contro un uso improprio dei dati. Ciò nonostante, è uno strumento molto potente che torna davvero utile in certe situazioni. Per esempio, ho usato un database SQLite in un recente progetto di analisi dei social media per archiviare una $edge \space list^{1}$ di milioni di utenti Twitter in modo molto semplice ed efficiente.
Quindi, in questo tutorial per principianti, illustrerò come lavorare con un database SQLite. Vedremo l'installazione di SQLite, la creazione e le operazioni sulle tabelle, i dot command di SQLite e come usare semplici query SQL per manipolare i dati all'interno di un database SQLite.
$^{1}$ Una edge list, o lista di adiacenza, è una raccolta di liste non ordinate usata per rappresentare un grafo nell'analisi delle reti. Ogni lista descrive l'insieme dei vicini di un dato nodo o vertice contenuto nel grafo.
La prima cosa che vedremo è come installare SQLite sul tuo computer. È estremamente semplice. Se guardi il tutorial SQLite con Python di Sayak Paul, scoprirai che esiste uno strumento GUI chiamato DB Browser for SQLite che ti permette di iniziare facilmente. Tuttavia, per variare, ti mostrerò come usare lo strumento da riga di comando, che a volte preferisco anch'io.
La prima cosa da fare, se hai un dispositivo Windows, è andare a questo sito e scaricare sqlite-tools-win32-x86-3270200.zip. Una volta estratta la cartella, dovresti vedere i seguenti tre file:

Dopodiché, avviare la riga di comando di SQLite è semplice come fare clic sull'applicazione sqlite3, che farà comparire la console così:

Ora potresti notare che l'impostazione predefinita di SQLite è usare un database transitorio in memoria. Nella stragrande maggioranza dei casi non vorrai usarlo. Invece, creeremo un nuovo database usando il dot command .open seguito dal nome che vuoi dare al nuovo file di database (vedi sotto):

Così, in un attimo, hai creato un nuovo database. Nota anche che è fondamentale mettere .db dopo il nome desiderato del database per creare un file di database. Abbiamo chiamato il database Tweet_Data.db perché userò tweet per popolare le tabelle del database.
Con il database creato, possiamo procedere a creare la nostra tabella di tweet. Possiamo farlo in due modi. Primo, possiamo semplicemente importare un file .csv e trasformarlo in una tabella. Questo si fa impostando SQLite in modalità csv usando il dot command .mode seguito da csv, e con il dot command .import che accetta un file (in questo caso un csv nella stessa cartella, ma può essere un qualsiasi csv nel tuo computer se scrivi il percorso completo) e un nome di tabella a tua scelta. Potresti anche voler visualizzare le intestazioni di colonna usando il dot command .headers seguito da on. (Vedi sotto)

Una volta fatto, puoi usare il comando .tables per visualizzare tutte le tabelle disponibili in un file di database, così come il comando .schema seguito dal nome di una tabella per visualizzarne la struttura. Inoltre, puoi eseguire una semplice query come SELECT $$ FROM Table_Name* per verificare che i dati ci siano.

Oltre a creare tabelle importando file come csv, puoi anche creare tabelle usando CREATE TABLE e poi inserire nuove righe con INSERT INTO. Nell'esempio seguente vedrai come creare una tabella da zero e inserire due nuove righe.
Nota: nella riga di comando di SQLite, se vuoi continuare a scrivere la stessa query sulla riga successiva come faccio nell'esempio, premi semplicemente Invio quando vuoi una nuova riga. La query verrà valutata dopo aver premuto Invio quando c'è un punto e virgola alla fine.

Se a un certo punto decidi di voler esportare i risultati di una query in un file esterno come un csv, puoi farlo facilmente con la potenza di SQLite. Per un'esportazione pulita in csv, puoi usare un processo simile a quello dell'import. Prima usi .header seguito da on e .mode seguito da csv. Poi usi il dot command .output seguito dal nome del file csv desiderato e, infine, esegui la query SQL che vuoi esportare ed esci da SQLite con il comando .exit. Proviamo a esportare in un csv la nuova tabella che abbiamo creato nel passaggio precedente.

Ecco il nuovo csv creato anche con i dati di Sample_Tweets_2.

Oltre a creare ed esportare tabelle, puoi anche usare le istruzioni SQL UPDATE/SET e DROP TABLE per aggiornare righe in una tabella o eliminare del tutto una tabella. Nel seguente esempio aggiorneremo il secondo tweet nella tabella di prova Sample_Tweets_2.

Ora salutiamo la tabella di prova Sample_Tweets_2 ed eliminiamola dal file di database usando DROP TABLE:

Ora che conosci le nozioni essenziali su come lavorare con un database SQLite e manipolare le tabelle, non ti resta che ricavare informazioni utili tramite query SQL. Per ora, ti mostrerò un paio di query relativamente semplici che ho eseguito durante il mio progetto di analisi dei social media su Twitter. Puoi considerarlo come un piccolo caso di studio per illustrare un'applicazione reale di un database SQLite.
Partiamo da qualcosa di semplice: trovare tutti gli screen name unici degli utenti Twitter nella tabella Sample_Tweets. Nel progetto in cui ho usato questi tweet, per me era essenziale trovare tutti gli utenti unici da cui avevo raccolto i tweet, poiché dovevo recuperare i loro follower per creare la edge list menzionata all'inizio di questo tutorial.

26.860 utenti unici nel database. Un ottimo campione, considerando che gli argomenti che stavo monitorando erano localizzazione di siti web e traduzione. Vediamo i 20 utenti con il maggior numero di tweet nel campione usando una query SQL leggermente più complessa (retweet esclusi):

Guarda un po', il numero più alto di tweet appartiene a un bot! Tuttavia, come poi è emerso, l'ultimo della lista, UweMuegge, è piuttosto influente secondo le varie statistiche di rete che ho calcolato per il progetto. Non era però il più importante.
Infine, diamo un'occhiata ad alcuni dei tweet scritti da UweMuegge usando un'altra query SQL:

Due argomenti principali, a quanto pare: annunci di lavoro nella traduzione e conferenze sulla traduzione. Ha senso che le persone del settore lo seguano su Twitter.
Un'altra cosa che salta all'occhio dallo screenshot sopra è che incappi in uno dei limiti dell'interfaccia a riga di comando di SQLite. Se hai campi di testo lunghi, non verranno visualizzati in modo gradevole e saranno difficili da leggere. Per questo, in casi del genere, è una buona idea usare DB Browser for SQLite.
In questo tutorial hai imparato a creare database SQLite e a manipolare le tabelle usando dot command e istruzioni SQL. Inoltre, hai visto un piccolo caso di studio reale in cui ho usato un database SQLite per gestire dati provenienti da Twitter. È tanta roba, quindi complimenti!
Vale la pena notare che i database SQLite sono più utili se combinati con R e Python. Puoi manipolare i database SQLite tramite Python usando il modulo sqlite3 (se vuoi saperne di più, vedi il tutorial SQLite con Python) oppure con R usando RSQLite. Infatti, la edge list dei follower degli utenti di Twitter che ho menzionato prima è archiviata in un database SQLite che ho creato con RSQLIte aggiungendo a una tabella la rete di follower di ciascun utente. In questa fase del progetto, l'uso di SQLite è stato vitale, poiché interruzioni di corrente o aggiornamenti automatici di Windows possono spegnere forzatamente il computer e costringerti a ricominciare a raccogliere le reti di follower da zero. A causa dei limiti di velocità delle API di Twitter, questo può richiedere circa 4 settimane, quindi ripartire da 0 in questi casi è molto indesiderabile. Tuttavia, se salvi le reti di follower in un database SQLite man mano che procedi, anche se il computer si spegne improvvisamente, puoi riprendere la raccolta dall'utente successivo all'ultimo presente nel database, il che fa risparmiare un sacco di tempo.
Questo è solo un esempio di come i database SQLite possano essere uno strumento fantastico nell'arsenale di un data scientist. Ti invito ad approfondire i database SQLite e SQL oltre quanto trattato in questo tutorial. Continua a imparare: il cielo è il limite!
Se vuoi imparare di più su SQL, segui il corso di DataCamp Introduzione ai database relazionali in SQL.
Approfondisci SQL
Corso
blog
Tim Lu
12 min

blog
Abid Ali Awan
10 min

blog
Abid Ali Awan
15 min