# SQLite3 con Python

[SQLite](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/sqlite/ "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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/tutorial-python/ "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:

```python
import sqlite3
```

### 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:

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

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:

```python
print(connection.total_changes)
```

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](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/database-relazionale/ "Database relazionale"), 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:

```python
cursor = connection.cursor()
```

È 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:

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

### Quinto passaggio: aggiungere dati

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

```python
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)")
```

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”:

```python
connection.commit()
```

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](https://www.ionos.it/server/vps "VPS Hosting di IONOS") basato su cloud. Per le applicazioni aziendali, invece, è più adatto un [server dedicato](https://www.ionos.it/server/dedicated-server "Server dedicati di IONOS").

## 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”:

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

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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/ciclo-for-su-python/ "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:

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

### Modificare i dati

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

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

## Utilizzare i segnaposto

Se desideraste formulare query SQL dinamiche nel vostro programma Python, non dovreste mai usare [stringhe in Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/stringhe-in-python/ "Stringhe in Python"), poiché potrebbero venire sfruttate dagli hacker per attaccare il vostro programma con la tecnica della [SQL injection](https://www.ionos.it/digitalguide/server/sicurezza/sql-injection-che-cose-e-come-proteggersi/ "SQL injection: che cos’è e come proteggersi"). 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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/tuple-in-python/ "Tuple in Python") con cui sostituire i punti interrogativi.

Le seguenti query sono quindi equivalenti:

```python
# 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))
```

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:

```python
connection.close()
```


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/sqlite3-in-python/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/sqlite3-in-python/) for AI/LLM consumption.