Ricerca nel sito web

12 giorni di (giorno 2) - Connessione al database PostgreSQL con Python


Benvenuti al 2° giorno di 12 giorni di DigitalOcean! Ieri abbiamo iniziato a creare il nostro servizio promemoria compleanni, una semplice app che invia notifiche SMS per i compleanni imminenti. 🎉 Abbiamo configurato un database PostgreSQL su DigitalOcean per archiviare i dettagli di contatto.

Oggi ci collegheremo a quel database utilizzando 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 per essere scalato quando lo ospitiamo su DigitalOcean.

✨ Perché questo passaggio?

La creazione del database è stato solo l'inizio. Per creare qualsiasi app significativa, abbiamo bisogno di un modo per interagire con tali dati in modo programmatico. Python semplifica la connessione 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 credenziali del nostro database in un file .env e le caricheremo nel nostro script utilizzando python-dotenv. Ciò garantisce che le tue credenziali non siano codificate nello script, rendendo più sicura la condivisione e la distribuzione della tua app.

🚀 Cosa imparerai

Ecco il programma per oggi:

  1. Archivia le credenziali sensibili in un file .env.
  2. Utilizza python-dotenv per caricare tali 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 contatti

Alla fine, avrai una solida base per costruire la logica dell'app.

🛠 Di cosa avrai bisogno

Prima di approfondire, ecco cosa ti servirà:

  • Il database che abbiamo configurato il giorno 1. TODO: collegamento all'URL del giorno 1
  • Python installato sul tuo computer locale (consigliamo Python 3.8+).

🧑🍳 Ricetta per il giorno 2: connettersi a PostgreSQL con Python

Passaggio 1: installa le librerie richieste 📦

Per connettere Python a PostgreSQL e mantenere le nostre credenziali sicure, utilizzeremo due librerie di chiavi:

  • pg8000: una libreria Python pura che ti consente di connetterti e interagire con i database PostgreSQL.
  • python-dotenv: un'utilità per caricare credenziali sensibili (come nomi utente e password di database) da un file .env, in modo da non doverli codificare nel tuo script.

Installiamoli ora. Esegui questo comando nel tuo terminale:

pip install pg8000 python-dotenv

Suggerimento avanzato: se utilizzi un ambiente virtuale (sempre una buona idea!), assicurati di attivarlo prima di eseguire il comando precedente per mantenere organizzate le tue dipendenze.

Passaggio 2: crea un file .env 📂

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

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

Sostituisci i valori del segnaposto con le credenziali del giorno 1.

Suggerimento per esperti: aggiungi .env al tuo file .gitignore per assicurarti che le tue credenziali non vengano accidentalmente inviate al controllo della versione.

Passaggio 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 connettiti al nostro banca dati.

Ecco il codice per iniziare:

# connect_to_db.py

import pg8000
from dotenv import load_dotenv
import os
Load environment variables from .env file
load_dotenv()
Database connection details
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:
    # Connect to the 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 file .env.
  • Stabilisce una connessione al tuo database utilizzando pg8000.connect().
  • Stampa un messaggio di successo o di errore a seconda del risultato.

Passaggio 4: testare 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:

  • Ricontrolla i valori nel file .env.
  • Assicurati che il tuo indirizzo IP sia aggiunto alle fonti attendibili del database (vedi Passaggio 6 del Giorno 1).

Passaggio 5: recupera i dati dal database 🔍

Ora estendiamo lo script per recuperare i 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
Load environment variables from .env file
load_dotenv()
Database connection details
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:
    # Connect to the database
    connection = pg8000.connect(
        host=DB_HOST,
        database=DB_NAME,
        user=DB_USER,
        password=DB_PASSWORD,
        port=DB_PORT
    )
    print("Connection successful!")

    # Query the database
    cursor = connection.cursor()
    query = "SELECT * FROM contacts;"
    cursor.execute(query)
    records = cursor.fetchall()

    # Print the results
    print("Contacts:")
    for record in records:
        print(record)

    # Close the cursor and connection
    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 dei contatti.
  • Stampa ogni record sulla console.

Nota: se il tavolo è vuoto, non preoccuparti! Puoi comunque verificare che lo script venga eseguito senza errori. Per testare, puoi aggiungere rapidamente un contatto di esempio aprendo il tuo database utilizzando psql (o il tuo strumento preferito) ed 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 utilizzare psql o desideri esplorare strumenti dell'interfaccia utente come pgAdmin o TablePlus, consulta le istruzioni nel Giorno 1.

🎁 Conclusione

Ecco cosa hai realizzato oggi:

✅ Installate le librerie Python richieste.
✅ Collegato al tuo database DigitalOcean PostgreSQL utilizzando Python.
✅ Dati recuperati dalla tabella contatti con una semplice query.

Prossimo: domani inizieremo ad aggiungere la logica per trovare i prossimi compleanni e inviare notifiche SMS utilizzando Twilio. È qui che l'app inizia a prendere vita: resta sintonizzato! 🚀

Articoli correlati: