Ogni linguaggio di programmazione, degno di tale nome, deve avere degli
strumenti per accedere ai maggiori sistemi di gestione di base dati
relazionali. Anche python dispone di strumenti atti a risolvere questa
problematica. A tale scopo è stata sviluppata una raccolta di moduli,
denominata "DB-API". Tale libreria ha lo scopo di
creare un interfaccia unica di accesso ai database, indipendentemente dal
tipo di sistema utilizzato. Per fare questo sono stati sviluppati diversi
strati:
- Uno strato unico di accesso ai dati, composto da un insieme di
funzioni standard.
- Diversi drivers specifici per ogni tipo di database. A tal
proposito, esistono drivers per mySQL, Informix, DB2 e anche per ODBC.
Per accedere, ad esempio, a qualsiasi fonte dati ODBC, è necessario
caricare l'apposito modulo (chiamato "odbc"). Nel caso di odbc,
l'operazione è estremamente semplice. Infatti, una volta installate le
win32 extensions si ha gia' il modulo odbc disponibile. Vi illustro di
seguito un esempio con il quale utilizzo il linguaggio SQL per fare delle
interrogazioni ad un database.
Facciamo le seguenti ipotesi di lavoro, riferite chiaramente
all'ambiente Microsoft Windows:
- Ho creato un database in Microsoft Access denominato
"db_articoli.mdb".
- Ho creato un DSN (Data Source Name) con ODBC Manager, denominato
"articoli" (vedi il disegno). Esso associa il nome logico "articoli" al
file fisico "db_articoli.mdb".
- Il database contiene una tabella, denominata "elenco_articoli", con
due campi: codice e descrizione.
Voglio costruire un programma che mostra tutti i record della tabella
"elenco_articoli". Ecco il semplice listato che risolve questo
problema:
import odbc try: s = odbc.odbc('articoli') # mi
collego al DSN cur = s.cursor() cur.execute('select * from
elenco_articoli') rec = cur.fetchall()
print 'Codice --
Descrizione n' for i in rec: print i[0] + ' -- ' + i[1] +
'n' except: print 'errore'
Il risultato del programma potrebbe essere il seguente:
Codice -- Descrizione
233412 --
matita
567543 -- quaderno
533232 -- gomma
Analizzando il codice si possono fare le seguenti osservazioni:
- la variabile "s" rappresenta l'oggetto database. La variabile è
stata inizializzata utilizzando il modulo odbc.
- la variabile "cur" rappresenta un cursore sul database. Quindi
attraverso questo cursore è possibile navigare nella struttura del
database.
- attraverso il metodo "execute" è possibile eseguire una richiesta
SQL.
- Il metodo "fetchall()" restituisce una lista contenente tutti i
record risultanti dalla query SQL. Ogni elemento della lista "rec" è a
sua volta una lista con i valori dei campi. In questo caso i campi sono
due:
- Codice, nella posizione 0;
- Descrizione, nella posizione 1;
- Con un semplice ciclo posso stampare tutti i record della tabella.
Tutte le funzioni utilizzate fanno parte dello strato standard definito
dalla libreria DB-API. Questo significa che il codice non cambia se si
utilizza un altro Database al posto di Microsoft Access. L'unico
cambiamento riguarda l'utilizzo del modulo
apposito. |