Website-Suche

12 Tage von (Tag 2) - Verbindung zu Ihrer PostgreSQL-Datenbank mit Python herstellen


Willkommen zu Tag 2 von 12 Tagen von DigitalOcean! Gestern haben wir damit begonnen, unseren Geburtstags-Reminder-Service zu erstellen - eine einfache App, die SMS-Benachrichtigungen für bevorstehende Geburtstage sendet. 🎉 Wir haben eine PostgreSQL-Datenbank auf DigitalOcean eingerichtet, um Kontaktdaten zu speichern.

Heute werden wir uns mit dieser Datenbank über Python verbinden und unser Projekt einrichten, um sensible Zugangsdaten sicher zu halten.

Am Ende dieses Beitrags werden Sie ein Python-Skript haben, das Daten sicher aus Ihrer Datenbank abruft und bereit ist, beim Hosten auf DigitalOcean zu skalieren.

✨ Warum dieser Schritt?

Die Einrichtung der Datenbank war nur der Anfang. Um eine sinnvolle App zu erstellen, benötigen wir eine Möglichkeit, programmgesteuert mit diesen Daten zu interagieren. Python erleichtert die Verbindung zu PostgreSQL-Datenbanken, und mit der Hilfe einer Bibliothek wie pg8000 können wir in nur wenigen Zeilen Code mit PostgreSQL-Datenbanken arbeiten.

Um die Dinge sicher zu halten, werden wir unsere Datenbankanmeldeinformationen in einer .env-Datei speichern und sie mithilfe von python-dotenv in unser Skript laden. Dadurch wird sichergestellt, dass Ihre Anmeldeinformationen nicht in das Skript hardcodiert sind, was es sicherer macht, Ihre App zu teilen und bereitzustellen.

🚀 Was Sie lernen werden

Hier ist der Plan für heute:

  1. Speichern Sie sensitive Anmeldeinformationen in einer .env Datei.
  2. Verwenden Sie python-dotenv, um diese Anmeldeinformationen in Ihr Skript zu laden.
  3. Schreiben Sie ein Python-Skript, um sicher mit Ihrer PostgreSQL-Datenbank über pg8000 zu verbinden.
  4. Daten aus der contacts-Tabelle abrufen und anzeigen

Bis zum Ende dieses Kurses werden Sie eine solide Grundlage für den Aufbau der Logik der App haben.

🛠 Was Sie benötigen

Bevor wir beginnen, hier ist, was Sie benötigen:

  • Die Datenbank, die wir am ersten Tag eingerichtet haben. TODO: Link zur URL vom ersten Tag
  • Python ist auf Ihrem lokalen Computer installiert (wir empfehlen Python 3.8+).

🧑🍳 Rezept für Tag 2: Verbindung zu PostgreSQL mit Python herstellen

Schritt 1: Installieren Sie die erforderlichen Bibliotheken 📦

Um Python mit PostgreSQL zu verbinden und unsere Anmeldeinformationen sicher zu halten, verwenden wir zwei wichtige Bibliotheken:

  • pg8000: Eine reine Python-Bibliothek, die es Ihnen ermöglicht, eine Verbindung zu PostgreSQL-Datenbanken herzustellen und mit ihnen zu interagieren.
  • python-dotenv: Ein Dienstprogramm, um sensible Zugangsdaten (wie Datenbankbenutzernamen und -passwörter) aus einer .env-Datei zu laden, sodass Sie sie nicht in Ihr Skript hartkodieren müssen.

Lass sie uns jetzt installieren. Führe diesen Befehl in deinem Terminal aus:

pip install pg8000 python-dotenv

Profi-Tipp: Wenn Sie eine virtuelle Umgebung verwenden (immer eine gute Idee!), stellen Sie sicher, dass Sie diese aktivieren, bevor Sie den oben genannten Befehl ausführen, um Ihre Abhängigkeiten organisiert zu halten.

Schritt 2: Erstelle eine .env-Datei 📂

In Ihrem Projektverzeichnis erstellen Sie eine Datei mit dem Namen .env. Hier werden wir unsere Datenbank-Anmeldeinformationen speichern. Fügen Sie Folgendes hinzu:

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

Ersetzen Sie die Platzhalterwerte mit den Anmeldedaten von Tag 1.

Profi-Tipp: Fügen Sie .env zu Ihrer .gitignore Datei hinzu, um sicherzustellen, dass Ihre Anmeldedaten nicht versehentlich in die Versionskontrolle übertragen werden.

Schritt 3: Erstelle ein Python-Skript 🐍

Erstellen Sie eine neue Datei mit dem Namen connect_to_db.py und richten Sie das Skript so ein, dass es die Anmeldeinformationen aus .env mit python-dotenv lädt und eine Verbindung zu unserer Datenbank herstellt.

Hier ist der Code, um loszulegen:

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()

Dieses Skript erledigt ein paar wichtige Dinge:

  • Lädt Anmeldeinformationen sicher aus Ihrer .env Datei.
  • Stellt eine Verbindung zu Ihrer Datenbank über pg8000.connect() her.
  • Gibt eine Erfolgs- oder Fehlermeldung je nach Ergebnis aus.

Schritt 4: Testen Sie die Verbindung ✅

Jetzt lass uns sicherstellen, dass alles funktioniert. Führe dein Skript aus:

python connect_to_db.py

Wenn alles korrekt eingerichtet ist, sollten Sie Folgendes sehen:

Connection successful!

Wenn es einen Fehler gibt:

  • Überprüfen Sie die Werte in Ihrer .env-Datei noch einmal.
  • Stellen Sie sicher, dass Ihre IP-Adresse zu den vertrauenswürdigen Quellen der Datenbank hinzugefügt wird (siehe Schritt 6 von Tag 1).

Schritt 5: Daten aus der Datenbank abrufen 🔍

Jetzt erweitern wir das Skript, um Daten abzurufen. Aktualisieren Sie Ihr connect_to_db.py Skript, um Folgendes einzuschließen:

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)

Dieses Skript jetzt:

  • Führt eine Abfrage aus, um alle Datensätze aus der Kontakttabelle abzurufen.
  • Gibt jeden Datensatz in der Konsole aus.

Hinweis: Wenn die Tabelle leer ist, keine Sorge! Sie können trotzdem überprüfen, ob das Skript fehlerfrei läuft. Zum Testen können Sie schnell einen Beispieldatensatz hinzufügen, indem Sie Ihre Datenbank mit psql (oder Ihrem bevorzugten Tool) öffnen und diesen SQL-Befehl ausführen:

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

Wenn Sie eine Auffrischung darüber benötigen, wie man psql verwendet, oder UI-Tools wie pgAdmin oder TablePlus erkunden möchten, sehen Sie sich die Anweisungen in Tag 1 an.

🎁 Zusammenfassung

Hier ist, was Sie heute erreicht haben:

✅ Die erforderlichen Python-Bibliotheken installiert.
✅ Mit Ihrer DigitalOcean PostgreSQL-Datenbank über Python verbunden.
✅ Daten aus der contacts Tabelle mit einer einfachen Abfrage abgerufen.

Nächstes: Morgen werden wir damit beginnen, Logik hinzuzufügen, um bevorstehende Geburtstage zu finden und SMS-Benachrichtigungen mit Twilio zu senden. Hier beginnt die App lebendig zu werden – bleiben Sie dran! 🚀