· informatica · 3 min read
Python e PostgreSQL: gestione di database
Scopri come utilizzare Python per interagire con un database PostgreSQL, un sistema di gestione di database open source ampiamente utilizzato per la sua affidabilità e flessibilità.

In questo post, vi mostrerò come sfruttare la potenza di Python per interagire con un database PostgreSQL, un sistema di gestione di database open source ampiamente utilizzato per la sua affidabilità e flessibilità.
Perché utilizzare Python con PostgreSQL?
Esistono diversi motivi per cui combinare Python e PostgreSQL rappresenta una scelta eccellente:
- Python è un linguaggio di programmazione versatile e potente: offre una vasta gamma di librerie e strumenti per la gestione di dati, rendendolo ideale per l’interazione con database.
- PostgreSQL è un database robusto e scalabile: offre un’ampia gamma di funzionalità avanzate, tra cui transazioni ACID, sicurezza avanzata e supporto per diversi tipi di dati.
- L’integrazione tra Python e PostgreSQL è semplice e intuitiva: la libreria
psycopg2
rende facile stabilire una connessione e gestire le operazioni CRUD (Create, Read, Update, Delete) sul database.
In questo post, vi guiderò passo-a-passo attraverso:
- Configurazione dell’ambiente: installeremo le librerie necessarie e stabiliremo la connessione al database PostgreSQL.
- Esecuzione di query di ricerca: impareremo a interrogare il database e recuperare dati specifici.
- Inserimento di nuovi dati: vedremo come inserire nuove informazioni all’interno del database.
- Esempio avanzato: Transazioni: approfondiremo come utilizzare le transazioni per garantire l’integrità dei dati.
Cominciamo!
1. Configurazione dell’ambiente
Per iniziare, assicuratevi di avere installato:
- Python 3
- Libreria
psycopg2
(eseguitepip install psycopg2
nel vostro terminale)
Stabiliamo la connessione al database:
import psycopg2
connessione = psycopg2.connect( host="localhost", port="5432", database="nome_database", user="nome_utente", password="password_utente",)
2. Esecuzione di query di ricerca
Per interrogare il database, utilizzeremo il cursore:
cursore = connessione.cursor()cursore.execute("SELECT * FROM tabella_esempio")risultati = cursore.fetchall()
for risultato in risultati: print(risultato)
cursore.close()
3. Inserimento di nuovi dati
Per inserire nuovi dati, utilizzeremo il metodo execute
del cursore:
cursore = connessione.cursor()cursore.execute("INSERT INTO tabella_esempio (colonna1, colonna2) VALUES (%s, %s)", ("valore1", "valore2"))connessione.commit()
cursore.close()
4. Esempio avanzato: Transazioni
Le transazioni garantiscono che un gruppo di operazioni venga eseguito atomicamente, o completamente o per niente.
try: cursore = connessione.cursor() cursore.execute("...") cursore.execute("...") connessione.commit()except Exception as e: connessione.rollback() print(f"Errore: {e}")finally: cursore.close()
Eseguire query complesse con filtri e aggregati:
cursore.execute("""SELECT nome, cognome, AVG(età)FROM anagraficaWHERE città = 'Milano'GROUP BY nomeORDER BY cognome ASC""")
risultati = cursore.fetchall()
for risultato in risultati: print(f"Nome: {risultato[0]}") print(f"Cognome: {risultato[1]}") print(f"Media età: {risultato[2]}")
cursore.close()
Aggiornare dati esistenti:
cursore = connessione.cursor()cursore.execute("""UPDATE anagraficaSET email = 'nuovo_email@dominio.it'WHERE id = 123""")connessione.commit()
cursore.close()
Eliminare dati:
cursore = connessione.cursor()cursore.execute("""DELETE FROM anagraficaWHERE città = 'Roma'""")connessione.commit()
cursore.close()
Creare e gestire tabelle:
cursore = connessione.cursor()cursore.execute("""CREATE TABLE IF NOT EXISTS nuova_tabella ( id INT PRIMARY KEY, nome VARCHAR(255) NOT NULL, cognome VARCHAR(255) NOT NULL)""")
connessione.commit()
cursore.close()
Impostare privilegi e autorizzazioni:
cursore = connessione.cursor()cursore.execute("""GRANT SELECT, INSERT, UPDATE, DELETE ON tabella_esempio TO utente_esempio""")
connessione.commit()
cursore.close()
Librerie utili per l’interazione con PostgreSQL
Oltre a psycopg2
, esistono diverse librerie Python per facilitare l’interazione con PostgreSQL:
- SQLAlchemy: un potente ORM (Object-Relational Mapping) che permette di mappare oggetti Python a tabelle del database.
- Peewee: un ORM più leggero e facile da usare rispetto a SQLAlchemy.
- psycopg2-async: una libreria per l’accesso asincrono al database, utile per applicazioni web ad alta concorrenza.
Esempi pratici
- Gestione di un blog: Python può essere utilizzato per creare un sistema di blogging completo, con la possibilità di creare, modificare e pubblicare articoli, gestire utenti e commenti.
- Analisi di dati: Python offre un’ampia gamma di librerie per l’analisi di dati, che possono essere utilizzate per estrarre informazioni da un database PostgreSQL e generare report e visualizzazioni.
- Automazione di processi: Python può essere utilizzato per automatizzare compiti ripetitivi, come l’invio di email o l’aggiornamento di dati in un database.
Conclusioni
L’utilizzo di Python per la gestione di database PostgreSQL rappresenta una scelta versatile e potente. Grazie alla sua ampia gamma di librerie e strumenti, Python è in grado di soddisfare le esigenze di qualsiasi progetto, dalla semplice gestione di dati all’analisi complessa e all’automazione di processi.
Per approfondire:
psycopg2 pypi.org psycopg2 - Python-PostgreSQL Database AdapterPostgreSQL: Documentation postgresql.org