Recherche de site Web

12 jours (jour 2) - Connexion à votre base de données PostgreSQL avec Python


Bienvenue au Jour 2 des 12 Jours de DigitalOcean ! Hier, nous avons commencé à créer notre service de rappel d'anniversaire, une application simple qui envoie des notifications par SMS pour les anniversaires à venir. 🎉 Nous avons mis en place une base de données PostgreSQL sur DigitalOcean pour stocker les coordonnées.

Aujourd'hui, nous allons nous connecter à cette base de données à l'aide de Python et configurer notre projet pour protéger les informations d'identification sensibles.

À la fin de cet article, vous disposerez d'un script Python qui récupère en toute sécurité les données de votre base de données et est prêt à évoluer lorsque nous l'hébergeons sur DigitalOcean.

✨Pourquoi cette étape ?

La configuration de la base de données n'était que le début. Pour créer une application significative, nous avons besoin d’un moyen d’interagir avec ces données par programmation. Python facilite la connexion aux bases de données PostgreSQL, et avec l'aide d'une bibliothèque comme pg8000, nous pouvons travailler avec les bases de données PostgreSQL en quelques lignes de code seulement.

Pour assurer la sécurité des choses, nous stockerons nos informations d'identification de base de données dans un fichier .env et les chargerons dans notre script à l'aide de python-dotenv. Cela garantit que vos informations d’identification ne sont pas codées en dur dans le script, ce qui rend le partage et le déploiement de votre application plus sûrs.

🚀 Ce que vous apprendrez

Voici le plan pour aujourd'hui :

  1. Stockez les informations d'identification sensibles dans un fichier .env.
  2. Utilisez python-dotenv pour charger ces informations d'identification dans votre script.
  3. Écrivez un script Python pour vous connecter en toute sécurité à votre base de données PostgreSQL à l'aide de pg8000
  4. Récupérer et afficher les données de la table contacts

À la fin de cela, vous disposerez d’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 créée le jour 1. TODO : lien vers l'URL du jour 1
  • Python installé sur votre machine locale (nous recommandons Python 3.8+).

🧑🍳 Recette du jour 2 : Connexion à PostgreSQL avec Python

Étape 1 : Installez les bibliothèques requises 📦

Pour connecter Python à PostgreSQL et sécuriser nos informations d'identification, nous utiliserons deux bibliothèques de clés :

  • pg8000 : Une bibliothèque Python pure qui vous permet de vous connecter et d'interagir avec des bases de données PostgreSQL.
  • python-dotenv : un utilitaire pour charger des informations d'identification sensibles (comme les noms d'utilisateur et les mots de passe de la 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

Conseil de pro : Si vous utilisez un environnement virtuel (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 le répertoire de votre projet, créez un fichier nommé .env. C'est ici que nous stockerons 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 d'espace réservé par les informations d'identification du Jour 1.

Conseil de pro : Ajoutez .env à votre fichier .gitignore pour vous assurer que vos informations d'identification ne sont pas accidentellement transmises au 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 informations d'identification depuis .env à l'aide de python-dotenv, puis 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 informations d'identification en toute sécurité à partir de votre fichier .env.
  • Établit une connexion à votre base de données en utilisant pg8000.connect().
  • Imprime un message de réussite ou d'erreur en fonction du résultat.

Étape 4 : Testez 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 dans votre fichier .env.
  • Assurez-vous que votre adresse IP est ajoutée aux sources fiables de la base de données (voir l'étape 6 du jour 1).

Étape 5 : Récupérer les 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 les éléments suivants :

# 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 la table est vide, pas de souci ! Vous pouvez toujours vérifier que le script s'exécute sans erreur. Pour les tests, vous pouvez ajouter rapidement un exemple de contact en ouvrant votre base de données à l'aide de psql (ou de 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 la façon d'utiliser psql ou si vous souhaitez explorer des outils d'interface utilisateur tels que pgAdmin ou TablePlus, consultez les instructions du premier jour.

🎁 Conclusion

Voici ce que vous avez accompli aujourd’hui :

✅ Installé les bibliothèques Python requises.
✅ Connecté à votre base de données DigitalOcean PostgreSQL à l'aide de Python.
✅ Récupération des données de la table contacts avec une simple requête.

Prochaine étape : demain, nous commencerons à ajouter une logique pour rechercher les anniversaires à venir et envoyer des notifications par SMS à l'aide de Twilio. C'est là que l'application commence à prendre vie : restez à l'écoute ! 🚀

Articles connexes: