· 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à.

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:

  1. Configurazione dell’ambiente: installeremo le librerie necessarie e stabiliremo la connessione al database PostgreSQL.
  2. Esecuzione di query di ricerca: impareremo a interrogare il database e recuperare dati specifici.
  3. Inserimento di nuovi dati: vedremo come inserire nuove informazioni all’interno del database.
  4. 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 (eseguite pip 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 anagrafica
WHERE città = 'Milano'
GROUP BY nome
ORDER 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 anagrafica
SET email = 'nuovo_email@dominio.it'
WHERE id = 123
""")
connessione.commit()

cursore.close()

Eliminare dati:

cursore = connessione.cursor()
cursore.execute("""
DELETE FROM anagrafica
WHERE 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:

    Back to Blog

    Related Posts

    View All Posts »
    Creazione e gestione degli indici nei database SQL

    Creazione e gestione degli indici nei database SQL

    Gli indici SQL sono strumenti potenti per ottimizzare le prestazioni dei database relazionali. Con una comprensione approfondita dei concetti chiave, delle tecniche di creazione e gestione, e dei benefici e delle considerazioni, gli studenti e i professionisti del database possono sfruttare al meglio gli indici per garantire prestazioni efficienti e scalabili per le loro applicazioni.

    Struct in C++

    Struct in C++

    Le struct rappresentano un elemento fondamentale del linguaggio C++, offrendo un modo flessibile e strutturato per gestire dati complessi. La loro semplicità d'uso e i numerosi vantaggi le rendono uno strumento prezioso per qualsiasi programmatore C++.

    Funzioni in C++

    Funzioni in C++

    Le funzioni in C++ rappresentano un costrutto fondamentale per la programmazione. Vediamo come si definiscono e come si utilizzano