Guida per principianti sull'interfaccia PostgreSQL - Python

Ciao there, futuri maghi dei database! Sono entusiasta di essere il tuo guida in questo viaggio emozionante nel mondo di PostgreSQL e Python. Come qualcuno che ha insegnato scienze informatiche per anni, posso dirti che questa combinazione è come il burro e la marmellata - semplicemente deliziosa! Allora, mettiamo le mani sporche e tuffiamoci!

PostgreSQL - Python

Installazione

Prima di iniziare a fare magie, dobbiamo impostare i nostri strumenti. Pensate a questo come preparare la cucina prima di cucinare un pasto gourmet.

  1. Prima di tutto, assicurati di avere PostgreSQL installato sul tuo computer. Puoi scaricarlo dal sito ufficiale di PostgreSQL.

  2. Poi, dobbiamo installare il modulo Python che ci permetterà di comunicare con PostgreSQL. Apri il tuo terminale o prompt dei comandi e digita:

pip install psycopg2

Questo comando è come chiedere al tuo computer di aggiungere un nuovo strumento al suo cassetto degli attrezzi. Una volta fatto, sei pronto a partire!

API del modulo Python psycopg2

Ora che abbiamo i nostri strumenti, diamo un'occhiata veloce a cosa possono fare. Il modulo psycopg2 ci fornisce un set di funzioni per interagire con PostgreSQL. Ecco una tabella delle più comuni:

Funzione Descrizione
connect() Stabilisce una connessione al database
cursor() Crea un oggetto cursor per eseguire comandi SQL
execute() Esegue un'operazione di database (query o comando)
fetchone() Recupera la prossima riga di un set di risultati di una query
fetchall() Recupera tutte (le rimanenti) righe di un set di risultati di una query
commit() Commit della transazione corrente
rollback() Torna all'inizio di qualsiasi transazione pendente
close() Chiude la connessione al database

Non preoccuparti se questo sembra un linguaggio estraneo ora. Esploreremo ciascuno di questi in dettaglio man mano che procediamo!

Connessione al Database

Iniziamo facendo una connessione al nostro database. È come bussare alla porta e chiedere di entrare.

import psycopg2

try:
connection = psycopg2.connect(
database="mydb",
user="myuser",
password="mypassword",
host="localhost",
port="5432"
)
print("Connessione riuscita!")
except (Exception, psycopg2.Error) as error:
print("Errore durante la connessione a PostgreSQL", error)

In questo codice, stiamo:

  1. Importando il modulo psycopg2
  2. Utilizzando la funzione connect() per stabilire una connessione
  3. Fornendo i dettagli necessari come nome del database, utente, password, ecc.
  4. Utilizzando un blocco try-except per gestire eventuali errori

Se tutto va bene, dovresti vedere "Connessione riuscita!" stampato. Congratulazioni, hai appena aperto la porta al tuo database!

Creazione di una Tabella

Ora che siamo dentro, creiamo una tabella per memorizzare alcuni dati. Immagina di allestire una libreria per organizzare i tuoi libri.

try:
cursor = connection.cursor()
create_table_query = '''CREATE TABLE books
(ID INT PRIMARY KEY     NOT NULL,
TITLE           TEXT    NOT NULL,
AUTHOR          TEXT    NOT NULL,
PUBLISHED_DATE  DATE);'''
cursor.execute(create_table_query)
connection.commit()
print("Tabella creata con successo!")
except (Exception, psycopg2.Error) as error:
print("Errore durante la creazione della tabella", error)
finally:
if connection:
cursor.close()
connection.close()
print("Connessione PostgreSQL chiusa")

Ecco cosa sta succedendo:

  1. Creiamo un oggetto cursor, che è come il nostro assistente di database
  2. Definiamo la nostra query SQL per creare una tabella chiamata 'books'
  3. Utilizziamo execute() per eseguire la query
  4. Effettuiamo un commit() per rendere permanenti le modifiche
  5. Infine, chiudiamo il cursor e la connessione per essere buoni cittadini del database

Operazione INSERT

È giunto il momento di aggiungere alcuni libri alla nostra libreria! Inseriamo un record nella nostra tabella.

try:
cursor = connection.cursor()
insert_query = """ INSERT INTO books (ID, TITLE, AUTHOR, PUBLISHED_DATE)
VALUES (%s, %s, %s, %s)"""
record_to_insert = (1, "To Kill a Mockingbird", "Harper Lee", "1960-07-11")
cursor.execute(insert_query, record_to_insert)
connection.commit()
print("Record inserito con successo")
except (Exception, psycopg2.Error) as error:
print("Errore durante l'inserimento dei dati", error)

In questo codice:

  1. Creiamo la nostra query INSERT con placeholders (%s) per i nostri valori
  2. Definiamo una tupla con i valori che vogliamo inserire
  3. Eseguiamo la query, passando la nostra tupla di valori
  4. Effettuiamo un commit() per rendere permanenti le modifiche

Operazione SELECT

Ora, controlliamo la nostra libreria e vediamo cosa abbiamo!

try:
cursor = connection.cursor()
select_query = "SELECT * from books"
cursor.execute(select_query)
records = cursor.fetchall()
for row in records:
print("ID:", row[0])
print("TITOLO:", row[1])
print("AUTORE:", row[2])
print("DATA DI PUBBLICAZIONE:", row[3], "\n")
except (Exception, psycopg2.Error) as error:
print("Errore durante il recupero dei dati", error)

Ecco cosa sta succedendo:

  1. Creiamo una query SELECT per recuperare tutti i record dalla nostra tabella 'books'
  2. Eseguiamo la query
  3. Utilizziamo fetchall() per ottenere tutti i risultati
  4. Iteriamo attraverso i risultati e stampiamo i dettagli di ciascun libro

Operazione UPDATE

Ops! Abbiamo fatto un errore. Aggiorniamo un record per correggerlo.

try:
cursor = connection.cursor()
update_query = """Update books set AUTHOR = %s where ID = %s"""
cursor.execute(update_query, ("Nelle Harper Lee", 1))
connection.commit()
print("Record aggiornato con successo")
except (Exception, psycopg2.Error) as error:
print("Errore durante l'aggiornamento dei dati", error)

In questo codice:

  1. Creiamo una query UPDATE con placeholders per il nuovo nome dell'autore e l'ID
  2. Eseguiamo la query con i nuovi valori
  3. Effettuiamo un commit() per rendere permanenti le modifiche

Operazione DELETE

Finalmente, impariamo come rimuovere un libro dalla nostra libreria.

try:
cursor = connection.cursor()
delete_query = """Delete from books where ID = %s"""
cursor.execute(delete_query, (1,))
connection.commit()
print("Record eliminato con successo")
except (Exception, psycopg2.Error) as error:
print("Errore durante l'eliminazione dei dati", error)
finally:
if connection:
cursor.close()
connection.close()
print("Connessione PostgreSQL chiusa")

Ecco cosa sta succedendo:

  1. Creiamo una query DELETE con un placeholder per l'ID
  2. Eseguiamo la query con l'ID del record che vogliamo eliminare
  3. Effettuiamo un commit() per rendere permanenti le modifiche
  4. Infine, chiudiamo il cursor e la connessione

Ecco fatto! Ora hai imparato le basi del lavoro con PostgreSQL utilizzando Python. Ricorda, la pratica rende perfetti, quindi non aver paura di sperimentare e provare cose diverse. Buon coding, e may your databases always be in perfect order!

Credits: Image by storyset