01. Primi passi

Utenti Windows e macOS

I programmi riportati in questa pagina sono stati concepiti per il S.O. Windows.

Gli utenti macOS per poter eseguire con successo gli stessi programmi devono apportare la modifica riportata di seguito.

Sostituire l'istruzione

db_file = r"C:\SQLite\db\comuni\comuni.db"

con

from pathlib import Path

home = str(Path.home())

db_file = home + "/SQLite/db/comuni/comuni.db"

Una semplice query

Questa procedura illustra come effettuare le seguenti operazioni:

  • Connettersi al database (se il database non esiste è segnalato l'errore)

  • Effettuare la SELECT su una tabella

  • Eseguire il FETCH (cioè l'estrazione) di tutti i record selezionati

Esempio:

  • Codice sorgente

import sqlite3

from sqlite3 import Error

db_file = r"C:\sqlite\db\comuni\comuni.db"

try:

conn = sqlite3.connect("file:"+db_file+"?mode=rw", uri=True)

print("Connessione a", db_file, "avvenuta correttamente")

except Error as e:

print("Errore *****", e)

exit(1)

sql_query = """

SELECT * FROM Regioni;

"""

try:

c = conn.cursor()

c.execute(sql_query)

except Error as e:

print("Errore *****", e)

conn.close()

exit(1)

righe = c.fetchall()

for riga in righe:

print(riga)

conn.close()

Note:

  • Nell'istruzione di assegnazione

db_file = r"C:\sqlite\db\comuni\comuni.db"

il carattere r prima della stringa, serve ad indicare che si tratta di una row string, cioè di una stringa nella quale i caratteri speciali (come il \) devono essere trattati come caratteri ordinari.

  • L'elenco prodotto dal programma mostra che la query fornisce una lista di elementi ciascuno dei quali è una tupla. Per accedere all'elenco delle regioni (senza la chiave né le virgolette) occorre fare riferimento al secondo elemento della tupla.

Esempio perfezionato:

  • Codice sorgente

import sqlite3

from sqlite3 import Error

db_file = r"C:\sqlite\db\comuni\comuni.db"

try:

conn = sqlite3.connect("file:"+db_file+"?mode=rw", uri=True)

print("Connessione a", db_file, "avvenuta correttamente")

except Error as e:

print("Errore *****", e)

exit(1)

sql_query = """

SELECT * FROM Regioni;

"""

try:

c = conn.cursor()

c.execute(sql_query)

except Error as e:

print("Errore *****", e)

conn.close()

exit(1)

righe = c.fetchall()

for riga in righe:

print(riga[1])

conn.close()

Query su più tabelle

Questa procedura illustra come effettuare le seguenti operazioni:

  • Connettersi al database (se il database non esiste è segnato l'errore)

  • Effettuare la SELECT su più tabelle collegate in JOIN

  • Eseguire il FETCH di tutti i record selezionati

Esempio:

  • Codice sorgente

import sqlite3

from sqlite3 import Error

db_file = r"C:\sqlite\db\comuni\comuni.db"

try:

conn = sqlite3.connect("file:"+db_file+"?mode=rw", uri=True)

print("Connessione a", db_file, "avvenuta correttamente")

except Error as e:

print("Errore *****", e)

exit(1)

sql_query = """

SELECT Regioni.Denominazione, Province.Denominazione,

Sigla

FROM Province, Regioni

WHERE Province.regioneID = Regioni.RegioneID;

"""

try:

c = conn.cursor()

c.execute(sql_query)

except Error as e:

print("Errore *****", e)

conn.close()

exit(1)

righe = c.fetchall()

for riga in righe:

print(riga[0], riga[1], riga[2])

conn.close()