SQLite3 con Python

SQLite è il sistema di database più diffuso al mondo e offre la possibilità di creare un database basato su SQL che può essere integrato direttamente in applicazioni di vario tipo. Anche Python supporta SQLite3 con un proprio modulo.

Come usare SQLite3 in Python

Potete integrare SQLite in Python sotto forma di modulo. Per lavorare efficacemente con il sistema di database in questo linguaggio di programmazione, è consigliabile avere conoscenze pregresse di SQL e Python. In questo modo la configurazione e il successivo utilizzo del database risulteranno più facili.

Consiglio

Se volete rinfrescare le vostre conoscenze di Python, vale la pena di dare un’occhiata al nostro tutorial su Python.

Impostare il proprio database: una guida

La configurazione del proprio database SQLite3 in Python richiede solo pochi passaggi. Una volta completata la configurazione, potete comunicare con il database utilizzando i normali comandi SQL.

Primo passaggio: importare SQLite3 in Python

Per avere accesso alle funzioni specifiche di SQLite3 in Python, è necessario importare il modulo corrispondente:

import sqlite3
python

Secondo passaggio: creare il database

Nella fase successiva, create un database utilizzando la funzione SQLite “connect()”. Questa restituisce un oggetto connection che può essere utilizzato per comunicare con il database. Una chiamata di funzione di connect, che crea una connessione con un database chiamato “test”, si presenta nel modo seguente:

connection = sqlite3.connect("test.db")
python

Il parametro trasmesso della funzione è un file di database. Se non avete ancora creato un file di database chiamato “test.db”, questo verrà recuperato automaticamente dalla chiamata alla funzione connect.

Terzo passaggio: controllare se il database è stato creato con successo

A questo punto verificate se il database SQLite3 è stato creato con successo. A tale scopo, potete richiamare la funzione “total_changes” sull’oggetto connection appena creato, che vi mostra quante righe di tabella del database relazionale sono state modificate dopo la connessione al database:

print(connection.total_changes)
python

Nel nostro caso, la funzione dovrebbe restituire il valore “0”, poiché non abbiamo ancora utilizzato alcun comando SQL e quindi abbiamo un database vuoto. Nel caso in cui i dati siano già stati memorizzati nel database, il valore di ritorno della funzione può ovviamente essere diverso.

Quarto passaggio: creare la struttura di base del database

Per aggiungere dati al vostro database SQLite3 in Python, dovete prima creare una tabella, come di consueto con i database relazionali, in cui memorizzare i vostri dati.

A tale scopo, dovete utilizzare SQLite3 in Python per creare un oggetto cursor con la funzione predefinita “cursor”, che vi consentirà di inviare comandi SQL al database. Il codice necessario a questo scopo è il seguente:

cursor = connection.cursor()
python

È quindi possibile utilizzare la funzione “execute” del modulo SQLite3 per inviare comandi SQL al database. La funzione accetta i comandi, che seguono la solita sintassi SQL, come stringhe. Quindi, se desiderate creare un database con il nome “example” e le colonne “id”, “name” e “age”, il codice Python corrispondente è il seguente:

cursor.execute("CREATE TABLE IF NOT EXISTS example (id INTEGER, name TEXT, age INTEGER)")
python

Quinto passaggio: aggiungere dati

Con la stessa sintassi necessaria per creare una tabella, vi aggiungete anche dei dati al suo interno:

cursor.execute("INSERT INTO example VALUES (1, alice, 20)")
cursor.execute("INSERT INTO example VALUES (2, 'bob', 30)")
cursor.execute("INSERT INTO example VALUES (3, 'eve', 40)")
python

Con il codice precedente, sono state aggiunte tre voci alla tabella del database chiamata “example”.

Per salvare le modifiche al database, utilizzate la funzione “commit”:

connection.commit()
python
Consiglio

Desiderate ospitare il database SQLite3 sul vostro server? La scelta tra diversi tipi di server è ampia. Per applicazioni e volumi di dati piccoli, ad esempio, è adatto un VPS basato su cloud. Per le applicazioni aziendali, invece, è più adatto un server dedicato.

Leggere i dati

Ovviamente, potete creare i vostri database con SQLite3 in Python, ma anche leggere e produrre dati da database esistenti. A tale scopo, dovete connettervi al database desiderato e, come illustrato nelle istruzioni guidate, creare degli oggetti connection e cursor corrispondenti. Successivamente, potete formulare la query SQL, inviarla al database con la funzione “execute” e visualizzare tutte le righe risultanti con la funzione “fetchall”:

cursor.execute("SELECT * FROM example")
rows = cursor.fetchall()
for row in rows:
    print(row)
python

La funzione “fetchall” vi restituisce un elenco di righe che corrispondono alla query. Per visualizzare tutte queste righe nella console, potete usare un ciclo for su Python insieme a una dichiarazione print.

Modifica dei dati esistenti

Poiché SQLite3 supporta il set di comandi SQL, avete la possibilità di modificare o eliminare i dati del database. A tale scopo, inviate al database i comandi SQL appropriati. Anche in questo caso, dovete stabilire una connessione al database e creare oggetti connection e cursor.

Cancellare i dati

Per cancellare la riga con ID 1, utilizzate il codice seguente:

cursor.execute("DELETE FROM example WHERE id = 1")
python

Modificare i dati

Per modificare l’età nella riga con ID 2 utilizzate il comando seguente:

cursor.execute("UPDATE example SET age = 31 WHERE id = 2")
python

Utilizzare i segnaposto

Se desideraste formulare query SQL dinamiche nel vostro programma Python, non dovreste mai usare stringhe in Python, poiché potrebbero venire sfruttate dagli hacker per attaccare il vostro programma con la tecnica della SQL injection. Al contrario, in Python si dovrebbe ricorrere al segnaposto SQL “?”, che si utilizza nella query SQL inviata con “execute” al posto di un valore specifico. Come secondo parametro potete trasmettere alla funzione “execute” una tupla in Python con cui sostituire i punti interrogativi.

Le seguenti query sono quindi equivalenti:

# Query SQL diretta
cursor.execute("UPDATE example SET age = 31 WHERE id = 2")
# Query SQL con segnaposti
age_var = 31
id_var = 2
cursor.execute("UPDATE example SET age = ? WHERE id = ?", (age_var, id_var))
python

Tenete presente che i punti interrogativi nella query SQL vengono sostituiti nell’ordine in cui si specificano le variabili nella tupla.

Chiudere la connessione al database

Dopo aver eseguito tutte le operazioni, dovete chiudere la connessione al database. Anche a questo scopo, il modulo SQLite3 in Python contiene una funzione corrispondente che si può richiamare direttamente sull’oggetto connection:

connection.close()
python
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.