12 Giorni di DigitalOcean (Giorno 2) – Connettersi al Tuo Database PostgreSQL con Python

Benvenuto a Giorno 2 di 12 Giorni di DigitalOcean! Ieri, abbiamo iniziato a costruire il nostro Servizio di Promemoria per Compleanni—una semplice app che invia notifiche SMS per i compleanni imminenti. 🎉 Abbiamo impostato un database PostgreSQL su DigitalOcean per memorizzare i dettagli dei contatti.

Oggi, ci connetteremo a quel database usando Python e configureremo il nostro progetto per mantenere al sicuro le credenziali sensibili.

Entro la fine di questo post, avrai uno script Python che recupera in modo sicuro i dati dal tuo database ed è pronto a scalare quando lo ospiteremo su DigitalOcean.

✨ Perché Questo Passaggio?

Impostare il database è stato solo l’inizio. Per costruire qualsiasi app significativa, abbiamo bisogno di un modo per interagire con quei dati in modo programmatico. Python rende facile connettersi ai database PostgreSQL e, con l’aiuto di una libreria come pg8000, possiamo lavorare con i database PostgreSQL in poche righe di codice.

Per mantenere le cose sicure, memorizzeremo le nostre credenziali del database in un file .env e le caricheremo nel nostro script utilizzando python-dotenv. Questo assicura che le tue credenziali non siano codificate nello script, rendendo più sicuro condividere e distribuire la tua app.

🚀 Cosa Imparerai

Ecco il piano per oggi:

  1. Memorizza credenziali sensibili in un file .env.
  2. Usa python-dotenv per caricare quelle credenziali nel tuo script.
  3. Scrivi uno script Python per connetterti in modo sicuro al tuo database PostgreSQL utilizzando pg8000
  4. Recupera e visualizza i dati dalla tabella contacts

Alla fine di questo, avrai una solida base per costruire la logica dell’app.

🛠 Cosa Ti Serve

Prima di tuffarci, ecco cosa ti servirà:

  • Il database che abbiamo impostato il Giorno 1. TODO: Link al URL del giorno 1
  • Python installato sulla tua macchina locale (consigliamo Python 3.8+).

🧑‍🍳 Ricetta per il Giorno 2: Collegarsi a PostgreSQL con Python

Passo 1: Installa le Librerie Necessarie 📦

Per collegare Python a PostgreSQL e mantenere sicure le nostre credenziali, utilizzeremo due librerie chiave:

  • pg8000: Una libreria Python pura che ti consente di collegarti e interagire con i database PostgreSQL.
  • python-dotenv: Un’utilità per caricare credenziali sensibili (come nomi utente e password del database) da un file .env, così non devi codificarli nel tuo script.

Installiamole ora. Esegui questo comando nel tuo terminale:

pip install pg8000 python-dotenv

Consiglio da Professionista: Se stai usando un ambiente virtuale (sempre una buona idea!), assicurati di attivarlo prima di eseguire il comando sopra per mantenere le tue dipendenze organizzate.

Passo 2: Crea un file .env 📂

Nella directory del tuo progetto, crea un file chiamato .env. Qui è dove memorizzeremo le nostre credenziali del database. Aggiungi quanto segue:

DB_HOST=<your-hostname>
DB_NAME=<your-database-name>
DB_USER=<your-username>
DB_PASSWORD=<your-password>

Sostituisci i valori segnaposto con le credenziali di Giorno 1.

Consiglio da professionista: Aggiungi .env al tuo file .gitignore per assicurarti che le tue credenziali non vengano accidentalmente inviate al controllo di versione.

Passo 3: Crea uno script Python 🐍

Crea un nuovo file chiamato connect_to_db.py, e imposta lo script per caricare le credenziali da .env utilizzando python-dotenv e collegati al nostro database.

Ecco il codice per iniziare:

# connect_to_db.py

import pg8000
from dotenv import load_dotenv
import os

# Carica le variabili d'ambiente dal file .env
load_dotenv()

# Dettagli della connessione al database
DB_HOST = os.getenv("DB_HOST")
DB_NAME = os.getenv("DB_NAME")
DB_USER = os.getenv("DB_USER")
DB_PASSWORD = os.getenv("DB_PASSWORD")
DB_PORT = int(os.getenv("DB_PORT"))

try:
    # Collega al database
    connection = pg8000.connect(
        host=DB_HOST,
        database=DB_NAME,
        user=DB_USER,
        password=DB_PASSWORD,
        port=DB_PORT
    )
    print("Connection successful!")
except Exception as e:
    print("An error occurred while connecting to the database:", e)
finally:
    if connection:
        connection.close()

Questo script fa alcune cose importanti:

  • Carica le credenziali in modo sicuro dal tuo file .env.
  • Stabilisce una connessione al tuo database utilizzando pg8000.connect().
  • Stampa un messaggio di successo o errore a seconda dell’esito.

Passo 4: Testa la Connessione ✅

Ora, assicuriamoci che tutto funzioni. Esegui il tuo script:

python connect_to_db.py

Se tutto è impostato correttamente, dovresti vedere:

Connection successful!

Se c’è un errore:

  • Controlla di nuovo i valori nel tuo file .env.
  • Assicurati che il tuo indirizzo IP sia aggiunto alle fonti fidate del database (vedi Passo 6 del Giorno 1).

Passo 5: Recupera Dati dal Database 🔍

Ora, estendiamo lo script per recuperare dati. Aggiorna il tuo script connect_to_db.py per includere quanto segue:

# connect_to_db.py

import pg8000
from dotenv import load_dotenv
import os

# Carica le variabili d'ambiente dal file .env
load_dotenv()

# Dettagli della connessione al database
DB_HOST = os.getenv("DB_HOST")
DB_NAME = os.getenv("DB_NAME")
DB_USER = os.getenv("DB_USER")
DB_PASSWORD = os.getenv("DB_PASSWORD")
DB_PORT = int(os.getenv("DB_PORT"))

try:
    # Connetti al database
    connection = pg8000.connect(
        host=DB_HOST,
        database=DB_NAME,
        user=DB_USER,
        password=DB_PASSWORD,
        port=DB_PORT
    )
    print("Connection successful!")

    # Esegui una query sul database
    cursor = connection.cursor()
    query = "SELECT * FROM contacts;"
    cursor.execute(query)
    records = cursor.fetchall()

    # Stampa i risultati
    print("Contacts:")
    for record in records:
        print(record)

    # Chiudi il cursore e la connessione
    cursor.close()
    connection.close()

except Exception as e:
    print("An error occurred:", e)

Questo script ora:

  • Esegue una query per recuperare tutti i record dalla tabella contatti.
  • Stampa ogni record sulla console.

Nota: Se la tabella è vuota, nessun problema! Puoi comunque verificare che lo script venga eseguito senza errori. Per testare, puoi aggiungere rapidamente un contatto di esempio aprendo il tuo database usando psql (o il tuo strumento preferito) e eseguendo questo comando SQL:

INSERT INTO contacts (first_name, last_name, birthday) 
VALUES ('Test', 'User', '1990-01-01');

Se hai bisogno di un ripasso su come usare psql o vuoi esplorare strumenti UI come pgAdmin o TablePlus, dai un’occhiata alle istruzioni in Giorno 1.

🎁 Conclusione

Ecco cosa hai realizzato oggi:

✅ Installate le librerie Python necessarie.
✅ Collegato al tuo database PostgreSQL di DigitalOcean utilizzando Python.
✅ Recuperati i dati dalla tabella contacts con una semplice query.

Prossimo passo: Domani inizieremo ad aggiungere la logica per trovare i compleanni in arrivo e inviare notifiche SMS utilizzando Twilio. Qui è dove l’app inizia a prendere vita—resta sintonizzato! 🚀

Source:
https://www.digitalocean.com/community/tutorials/connecting-to-postgresql-database-with-python