12 Jours de (Jour 2) - Se connecter à votre base de données PostgreSQL avec Python
Bienvenue au Jour 2 des 12 Jours de DigitalOcean ! Hier, nous avons commencé à construire notre Service de Rappel d'Anniversaire—une application simple qui envoie des notifications SMS pour les anniversaires à venir. 🎉 Nous avons configuré une base de données PostgreSQL sur DigitalOcean pour stocker les coordonnées.
Aujourd'hui, nous allons nous connecter à cette base de données en utilisant Python et configurer notre projet pour garder les informations d'identification sensibles en sécurité.
À la fin de cette publication, vous disposerez d'un script Python qui récupère en toute sécurité des données de votre base de données et qui est prêt à être mis à l'échelle lorsque nous l'hébergerons sur DigitalOcean.
✨ Pourquoi cette étape ?
La mise en place de la base de données n'était que le début. Pour construire une application significative, nous avons besoin d'un moyen d'interagir avec ces données de manière programmatique. Python facilite la connexion aux bases de données PostgreSQL, et avec l'aide d'une bibliothèque comme pg8000, nous pouvons travailler avec des bases de données PostgreSQL en quelques lignes de code seulement.
Pour garder les choses sécurisées, nous stockerons nos informations d'identification de base de données dans un fichier .env et les chargerons dans notre script en utilisant python-dotenv. Cela garantit que vos informations d'identification ne sont pas codées en dur dans le script, rendant ainsi le partage et le déploiement de votre application plus sûrs.
🚀 Ce que vous apprendrez
Voici le plan pour aujourd'hui :
- Stockez des informations d'identification sensibles dans un fichier
.env. - Utilisez
python-dotenvpour charger ces identifiants dans votre script. - Écrivez un script Python pour vous connecter en toute sécurité à votre base de données PostgreSQL en utilisant
pg8000. - Récupérer et afficher les données de la table
contacts
À la fin de cela, vous aurez une base solide pour construire la logique de l'application.
🛠 Ce dont vous aurez besoin
Avant de plonger, voici ce dont vous aurez besoin :
- La base de données que nous avons mise en place dès le premier jour. À faire : Lien vers l'URL du premier jour.
- Python installé sur votre machine locale (nous recommandons Python 3.8 ou plus).
🧑🍳 Recette pour le Jour 2 : Connexion à PostgreSQL avec Python
Étape 1 : Installez les bibliothèques requises 📦
Pour connecter Python à PostgreSQL et garder nos identifiants en sécurité, nous utiliserons deux bibliothèques clés :
- pg8000 : une bibliothèque Python pure qui vous permet de vous connecter à des bases de données PostgreSQL et d'interagir avec elles.
- python-dotenv : Un utilitaire pour charger des informations d'identification sensibles (comme les noms d'utilisateur et mots de passe de base de données) à partir d'un fichier
.env, afin que vous n'ayez pas à les coder en dur dans votre script.
Installons-les maintenant. Exécutez cette commande dans votre terminal :
pip install pg8000 python-dotenv
Astuce Pro : Si vous utilisez un environnement virtuel (ce qui est toujours une bonne idée !), assurez-vous de l'activer avant d'exécuter la commande ci-dessus pour garder vos dépendances organisées.
Étape 2 : Créez un fichier .env 📂
Dans votre répertoire de projet, créez un fichier nommé .env. C'est ici que nous allons stocker nos informations d'identification de base de données. Ajoutez ce qui suit :
DB_HOST=<your-hostname>
DB_NAME=<your-database-name>
DB_USER=<your-username>
DB_PASSWORD=<your-password>
Remplacez les valeurs de remplacement par les identifiants de Jour 1.
Astuce : Ajoutez .env à votre .gitignore pour vous assurer que vos identifiants ne soient pas accidentellement poussés dans le contrôle de version.
Étape 3 : Créez un script Python 🐍
Créez un nouveau fichier appelé connect_to_db.py, et configurez le script pour charger les identifiants à partir de .env en utilisant python-dotenv, et connectez-vous à notre base de données.
Voici le code pour commencer :
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()
Ce script fait quelques choses importantes :
- Charge les identifiants en toute sécurité depuis votre fichier
.env. - Établit une connexion à votre base de données en utilisant
pg8000.connect(). - Imprime un message de succès ou d'erreur en fonction du résultat.
Étape 4 : Tester la connexion ✅
Maintenant, assurons-nous que tout fonctionne. Exécutez votre script :
python connect_to_db.py
Si tout est correctement configuré, vous devriez voir :
Connection successful!
S'il y a une erreur :
- Vérifiez à nouveau les valeurs de votre fichier .env.
- Assurez-vous que votre adresse IP est ajoutée aux sources de confiance de la base de données (voir l'étape 6 du jour 1).
Étape 5 : Récupérer des données de la base de données 🔍
Maintenant, étendons le script pour récupérer des données. Mettez à jour votre script connect_to_db.py pour inclure ce qui suit :
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)
Ce script maintenant :
- Exécute une requête pour récupérer tous les enregistrements de la table des contacts.
- Imprime chaque enregistrement sur la console.
Remarque : Si le tableau est vide, pas de soucis ! Vous pouvez toujours vérifier que le script fonctionne sans erreurs. Pour tester, vous pouvez rapidement ajouter un contact d'exemple en ouvrant votre base de données avec psql (ou votre outil préféré) et en exécutant cette commande SQL :
INSERT INTO contacts (first_name, last_name, birthday)
VALUES ('Test', 'User', '1990-01-01');
Si vous avez besoin d'un rappel sur comment utiliser psql ou si vous souhaitez explorer des outils d'interface utilisateur comme pgAdmin ou TablePlus, consultez les instructions du Jour 1.
🎁 Conclusion
Voici ce que vous avez accompli aujourd'hui :
✅ Installé les bibliothèques Python requises.
✅ Connecté à votre base de données PostgreSQL DigitalOcean en utilisant Python.
✅ Récupéré des données de la table contacts avec une requête simple.
À suivre : Demain, nous commencerons à ajouter de la logique pour trouver les anniversaires à venir et envoyer des notifications par SMS en utilisant Twilio. C'est à ce moment-là que l'application commence à prendre vie—restez à l'écoute ! 🚀


