Website-Suche

12 Tage (Tag 2) – Herstellen einer Verbindung zu Ihrer PostgreSQL-Datenbank mit Python


Willkommen zum Tag 2 von 12 Days of DigitalOcean! Gestern haben wir mit dem Aufbau unseres Geburtstagserinnerungsdienstes begonnen – einer einfachen App, die SMS-Benachrichtigungen für bevorstehende Geburtstage sendet. 🎉 Wir haben auf DigitalOcean eine PostgreSQL-Datenbank eingerichtet, um Kontaktdaten zu speichern.

Heute stellen wir mit Python eine Verbindung zu dieser Datenbank her und richten unser Projekt ein, um vertrauliche Anmeldeinformationen zu schützen.

Am Ende dieses Beitrags verfügen Sie über ein Python-Skript, das Daten sicher aus Ihrer Datenbank abruft und skalierbar ist, wenn wir es auf DigitalOcean hosten.

✨ Warum dieser Schritt?

Das Einrichten 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 mithilfe einer Bibliothek wie pg8000 können wir in nur wenigen Codezeilen mit PostgreSQL-Datenbanken arbeiten.

Um die Sicherheit zu gewährleisten, speichern wir unsere Datenbankanmeldeinformationen in einer .env-Datei und laden sie mit python-dotenv in unser Skript. Dadurch wird sichergestellt, dass Ihre Anmeldeinformationen nicht fest im Skript codiert sind, was die Freigabe und Bereitstellung Ihrer App sicherer macht.

🚀 Was Sie lernen werden

Hier ist der Plan für heute:

  1. Speichern Sie vertrauliche 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 mit pg8000 eine sichere Verbindung zu Ihrer PostgreSQL-Datenbank herzustellen
  4. Daten aus der Tabelle Kontakte abrufen und anzeigen

Am Ende verfügen Sie über eine solide Grundlage für den Aufbau der App-Logik.

🛠 Was Sie brauchen

Bevor wir eintauchen, benötigen Sie Folgendes:

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

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

Schritt 1: Installieren Sie die erforderlichen Bibliotheken 📦

Um Python mit PostgreSQL zu verbinden und unsere Anmeldeinformationen zu schützen, verwenden wir zwei Schlüsselbibliotheken:

  • pg8000: Eine reine Python-Bibliothek, die Ihnen die Verbindung zu und die Interaktion mit PostgreSQL-Datenbanken ermöglicht.
  • python-dotenv: Ein Dienstprogramm zum Laden sensibler Anmeldeinformationen (wie Datenbankbenutzernamen und Passwörter) aus einer .env-Datei, sodass Sie sie nicht in Ihrem Skript fest codieren müssen.

Lassen Sie uns sie jetzt installieren. Führen Sie diesen Befehl in Ihrem 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 obigen Befehl ausführen, um Ihre Abhängigkeiten organisiert zu halten.

Schritt 2: Erstellen Sie eine .env-Datei 📂

Erstellen Sie in Ihrem Projektverzeichnis eine Datei mit dem Namen .env. Hier speichern wir unsere Datenbankanmeldeinformationen. 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 durch die Anmeldeinformationen von Tag 1.

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

Schritt 3: Erstellen Sie ein Python-Skript 🐍

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

Hier ist der Code für den Anfang:

# 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 einige wichtige Dinge:

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

Schritt 4: Testen Sie die Verbindung ✅

Stellen wir nun sicher, dass alles funktioniert. Führen Sie Ihr Skript aus:

python connect_to_db.py

Wenn alles richtig eingerichtet ist, sollten Sie Folgendes sehen:

Connection successful!

Wenn ein Fehler vorliegt:

  • Ü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 🔍

Erweitern wir nun das Skript, um Daten abzurufen. Aktualisieren Sie Ihr connect_to_db.py-Skript so, dass es Folgendes enthält:

# 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.
  • Druckt jeden Datensatz auf der Konsole.

Hinweis: Wenn der Tisch leer ist, ist das kein Problem! Sie können weiterhin überprüfen, ob das Skript fehlerfrei ausgeführt wird. Zum Testen können Sie schnell einen Beispielkontakt 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 der Verwendung von psql benötigen oder UI-Tools wie pgAdmin oder TablePlus erkunden möchten, lesen Sie die Anweisungen in Tag 1.

🎁 Zusammenfassung

Folgendes haben Sie heute erreicht:

✅ Installierte die erforderlichen Python-Bibliotheken.
✅ Mit Python mit Ihrer DigitalOcean PostgreSQL-Datenbank verbunden.
✅ Mit einer einfachen Abfrage Daten aus der Tabelle Kontakte abgerufen.

Als nächstes: Morgen beginnen wir mit dem Hinzufügen von Logik, um bevorstehende Geburtstage zu finden und SMS-Benachrichtigungen mit Twilio zu senden. Hier beginnt die App zum Leben zu erwachen – bleiben Sie dran! 🚀

Verwandte Artikel: