Automatizzare Microsoft Access con Python (pyodbc)

Script per File

Anche se Microsoft Access è un sistema chiuso, è possibile interagire con i suoi database (`.mdb` o `.accdb`) da script esterni come quelli in Python. Questo è molto utile per estrarre dati da vecchie applicazioni Access per l'analisi o per la migrazione.

Lo strumento standard per farlo su Windows è la libreria `pyodbc`, che permette a Python di comunicare con qualsiasi database che abbia un driver ODBC (Open Database Connectivity).

Prerequisiti

  • Python: Assicurati di usare una versione di Python compatibile con il tuo driver (es. entrambe a 64-bit).
  • Driver ODBC per Access: Devi installare il "Microsoft Access Database Engine Redistributable" dal sito di Microsoft.
  • Libreria `pyodbc`: Si installa con `pip install pyodbc`.

Connettersi ed Eseguire Query

Il processo consiste nel creare una "stringa di connessione" e usarla per connettersi al database.

import pyodbc

# Definisci il percorso del tuo file di database
db_file = r'C:\percorso\al\tuo\database.accdb'

# Crea la stringa di connessione
conn_str = (
    r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
    r'DBQ=' + db_file + ';'
)

# Connettiti al database
try:
    cnxn = pyodbc.connect(conn_str)
    cursor = cnxn.cursor()
    print("Connessione riuscita!")

    # Esegui una query
    cursor.execute("SELECT Nome, Cognome FROM Clienti WHERE Citta = 'Roma'")
    
    # Itera sui risultati
    for row in cursor.fetchall():
        print(f"Cliente: {row.Nome} {row.Cognome}")

    # Esegui un INSERT (ricorda di fare il commit)
    cursor.execute("INSERT INTO Clienti (Nome, Cognome) VALUES (?, ?)", 'Paolo', 'Bianchi')
    cnxn.commit()

except pyodbc.Error as e:
    print("Errore durante la connessione:", e)

finally:
    if 'cnxn' in locals():
        cnxn.close()
        print("Connessione chiusa.")

Questo approccio ti permette di integrare i dati di un'applicazione Access legacy in workflow di automazione più ampi, ad esempio per estrarre i dati e caricarli in un file Excel o in un database web.

Hai bisogno di una soluzione su misura?

Dalla Web App al gestionale custom, trasformiamo le tue idee in software performante. Contattaci per una consulenza gratuita.

Richiedi una consulenza