Vediamo un semplice esempio di una classe costruita in Python per accedere ad un database MS Access (*.mdb, *.accdb) utilizzando la libreria pyodbc.
Anzitutto procuriamoci pyodbc utilizzando PIP
1 |
pip install pyodbc |
Creiamo la nostra classe nella maniera seguente (nel mio caso creerò un file chiamato accessdb.py
):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
import pyodbc class AccessDB(): def __init__(s,cs): s.__cs = cs s.__conn = None s.__connect() def __connect(s): s.__conn = pyodbc.connect(s.__cs) def In(s,sql,*vals): cursor = s.__conn.cursor() cursor.execute(sql,vals) cursor.execute("SELECT @@IDENTITY") lastid = cursor.fetchone()[0] s.__conn.commit() return lastid def Out(s,sql,*vals): cursor = s.__conn.cursor() cursor.execute(sql,vals) risultato = [] for riga in cursor.fetchall(): tmp = {} for i, col in enumerate(cursor.description): tmp[col[0]] = riga[i] risultato.append(tmp) return risultato def __del__(s): s.__conn.close() |
Il metodo In
restituisce, se presente, l’ultimo ID inserito. Il metodo Out
restituisce una lista di dizionari, con i nomi delle colonne e i valori per ogni riga.
Immaginiamo di posizionare il suddetto file in una sottocartella librerie.
Possiamo usare la classe nella maniera seguente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
from librerie.accessdb import AccessDB db = AccessDB(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\cartella del database\scuola.accdb') sid = db.In("INSERT INTO studenti (nome,cognome) VALUES('Zeno','Neri')") print(sid) studenti = db.Out("SELECT * FROM studenti") print(studenti) for s in studenti: print(s["nome"]) del db |
ATTENZIONE! Nella stringa di connessione va inserito il percorso assoluto del file del database.