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:
- Archivia le credenziali sensibili in un file
.env
. - Utilizza
python-dotenv
per caricare tali credenziali nel tuo script. - Scrivi uno script Python per connetterti in modo sicuro al tuo database PostgreSQL utilizzando
pg8000
- 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! 🚀