Usare SQLite con Python

SQLite

SQLite è una libreria scritta in C per la gestione di un dbms leggero basato su un file .sqlite che contiene un database con tutti i dati di un utente, incluse tabelle, indici e definizioni salvate come tabelle di dati non richiedendo l’ utilizzo di un server, utilizzando una variante non standard del linguaggio di SQL. Tra i vantaggi si può vantare leggerezza, compattezza, velocità e la non necessita’ di un server per funzionare.

Vediamo ora tramite una serie di piccoli esempi come SQLite con Python.

Esempio 1: connessione al database e creazione di una tabella.

Per prima cosa creiamo un file di estensione .py e importiamo la libreria sqlite3 che ci servirà ad usare le funzionalità di SQLite con Python.

import sqlite3

Adesso dobbiamo creare una connessione al database tramite il metodo connect(), se il database non esiste verrà creato in automatico.

db = sqlite3.connect("myDataBase.db")

Una volta stabilita una connessione, creiamo un oggetto Cursor che richiama il suo metodo execute() per eseguire i comandi SQL.

cursore = db.cursor()

Adesso possiamo creare una semplice tabella.

*scriviamo in una variabile una query in SQL
creaTabella = "create table persone(id integer primary key autoincrement, cognome varchar(30), nome varchar(30))"
*eseguiamo la query
cursore.execute(creaTabella)

Possiamo verifica la validità del lavoro svolto scaricando un browser SQLite (tipo DB Browser for SQLite)per la gestione di esso che ci mostra la tabella appena creata.

Per cancellare invece una tabella scriveremo la query seguente

cancellaTabella = "drop table persone"
cursore.execute(cancellaTabella)

A seguire il codice completo dell’ esempio.

import sqlite3
db = sqlite3.connect("myDataBase.db")
cursore = db.cursor()
creaTabella = "create table persone(id int primary key not null, cognome varchar(30), nome varchar(30))"
cursore.execute(creaTabella)

CRUD.

CRUD e’ l’ acronimo di Create, Read, Update, Delete, che non sono altro che le quattro operazioni fondamentali che si fanno sui dati, ovvero create indica l’inserimento dei dati, read la lettura, update la modifica e delete l’eliminazione.

Esempio 2: inserimento dati in una tabella (create).

Prendiamo il codice scritto in precedenza e teniamo le prime tre righe che sono l’importazione di sqlite3, la connessione al database, e la creazione del cursore, poi vi aggiungeremo la query dell’inserimento dei dati in tabella, l’allocazione in memoria delle modifiche e per finire useremo un comando che non abbiamo ancora visto, il metodo commit() che rende definitive le modifiche sul database.

import sqlite3
db = sqlite3.connect("myDataBase.db")
cursore = db.cursor()

inserisciTabella = """insert into persone(cognome, nome) values
                    ('Mazzini', 'Giuseppe'),
                    ('Marconi', 'Guglielmo'),
                    ('Benso', 'Camillo'),
                    ('Verdi', 'Giuseppe'),
                    ('Mameli', 'Goffredo')
                """
cursore.execute(inserisciTabella)
db.commit()

Possiamo verificare le modifiche effettuate usando il browser SQLite.

Fig 1.

Esempio 3: visualizzare i dati in tabella (read).

Per visualizzare i dati in tabella, nella query useremo il costrutto SELECT, questa forma e’nella sua struttura molto ampia fornendo parecchie funzionalità per poter restituire i più svariati risultati anche in forme complesse, in questa sede ci limiteremo comunque ad usare la forma più base.
Prendiamo l’esempio precedente e sostituiamo la query di inserimento con quella di selezione, alla fine stamperemo a video i dati ciclando l’array restituito dal metodo cursore.fetchall()

import sqlite3
db = sqlite3.connect("myDataBase.db")
cursore = db.cursor()

visualizzaElementi = "select * from persone"
cursore.execute(visualizzaElementi)
for i in cursore.fetchall():
    print(i[0], i[1], i[2])

La Fig 2 mostra il contenuto della tabella.

Fig 2.
Fig 2. Contenuto della tabella

 

Esempio 4: modifica dei dati in tabella (update).

Per la modifica dei dati useremo il comando update come vedremo nell’esempio seguente.

import sqlite3
db = sqlite3.connect("myDataBase.db")
cursore = db.cursor()

modificaDati = "update persone set cognome='Volta', nome='Alessandro' where id=2"
cursore.execute(modificaDati)
db.commit()

visualizzaElementi = "select * from persone"
cursore.execute(visualizzaElementi)
for i in cursore.fetchall():
    print(i[0], i[1], i[2])

In Fig 3. si può vedere il database aggiornato.

Fig 3.

Esempio 5: cancellazione dei dati in tabella (delete).

Per la cancellazione dei dati useremo il comando delete come vedremo nell’esempio seguente.

import sqlite3
db = sqlite3.connect("myDataBase.db")
cursore = db.cursor()

deleteDati = "delete from persone where id=3"
cursore.execute(deleteDati)
db.commit()

visualizzaElementi = "select * from persone"
cursore.execute(visualizzaElementi)
for i in cursore.fetchall():
    print(i[0], i[1], i[2])

Da notare che il metodo commit() si usa solo per quelle operazioni di inserimento, modifica e cancellazione, ovvero quelle operazioni dove si fanno delle azioni di modifica della tabella.

In questo breve articolo abbiamo visto come si può arrivare a gestire dati anche in  grandi quantità con estrema semplicità usando il binomio Python/SQLite.

 

SviluppoMania
Stay Tuned

MARCO.VERGNANI

Nella mia vita a 12 anni e' entrato a far parte un Intel 80286 con 4MB di RAM, un Hard disk da 20 MB e una primissima scheda VGA appena uscita e da allora mi si e' aperto un mondo pieno di bit. Appassionato di programmazione fin da piccolo, mi diverto a costruire piccoli robottini. Curioso delle molteplici applicazioni che le macchine automatiche possono compiere, e adoro vedere volare quegli strani oggetti chiamati droni.

Articoli correlati

Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.