Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser Schnellstartanleitung stellen Sie mithilfe von Python eine Verbindung mit einer Azure HorizonDB-Instanz her. Anschließend verwenden Sie SQL-Anweisungen zum Abfragen, Einfügen, Aktualisieren und Löschen von Daten in der Datenbank der Plattformen macOS, Ubuntu Linux und Windows.
Die Schritte in diesem Artikel umfassen die PostgreSQL-Authentifizierung.
Die PostgreSQL-Authentifizierung verwendet Konten, die in PostgreSQL gespeichert sind, und Sie müssen die Rotation der Kennwörter selbst verwalten.
In diesem Artikel wird davon ausgegangen, dass Sie mit der Entwicklung mit Python vertraut sind, aber Sie sind noch nicht mit Azure HorizonDB vertraut.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Kostenlos ein Konto erstellen.
- Ein Azure HorizonDB-Cluster. Informationen zum Erstellen Azure HorizonDB-Clusters finden Sie unter Create an Azure HorizonDB cluster.
- Python 3,8+.
- Aktuelles pip-Paketinstallationsprogramm.
Hinzufügen von Firewallregeln für Ihre Clientarbeitsstation
- Wenn Sie Ihren Azure HorizonDB-Cluster mit Public-Zugriff (zulässige IP-Adressen) erstellt haben, können Sie Ihre lokale IP-Adresse der Liste der Firewallregeln in Ihrem Cluster hinzufügen. Weitere Informationen finden Sie unter Networking in Azure HorizonDB (Vorschau).
Vorbereiten der Entwicklungsumgebung
Wechseln Sie zu einem Ordner, in dem Sie den Code ausführen möchten, erstellen Sie anschließend eine virtuelle Umgebung, und aktivieren Sie diese. Eine virtuelle Umgebung ist ein eigenständiges Verzeichnis für eine bestimmte Python-Version sowie die anderen Pakete, die für diese Anwendung benötigt werden.
Führen Sie die folgenden Befehle aus, um eine virtuelle Umgebung zu erstellen und diese zu aktivieren:
py -3 -m venv .venv
.venv\Scripts\activate
Installieren der Python-Bibliotheken
Installieren Sie die Python-Bibliotheken, die zum Ausführen der Codebeispiele erforderlich sind.
Installieren Sie das Modul psycopg, das das Herstellen einer Verbindung mit einer PostgreSQL-Datenbank sowie das Abfragen einer PostgreSQL-Datenbank ermöglicht.
# Recommended: install the binary wheel that bundles a compatible libpq wrapper (Windows/macOS)
python -m pip install "psycopg[binary]"
# Linux alternative (if you prefer building against system libpq):
sudo apt-get update
sudo apt-get install -y libpq-dev build-essential python3-dev
python -m pip install psycopg
Hinzufügen von Authentifizierungscode
In diesem Abschnitt fügen Sie Ihrem Arbeitsverzeichnis Authentifizierungscode hinzu und führen alle zusätzlichen Schritte aus, die für die Authentifizierung und Autorisierung mit Ihrer Clusterinstanz erforderlich sind.
Bevor Sie den Authentifizierungscode hinzufügen, stellen Sie sicher, dass die erforderlichen Pakete für jedes Beispiel installiert sind.
Erforderliche Pakete (Beispiele in diesem Artikel):
- Kennwortbeispiel: (empfohlen:
psycopgpython -m pip install "psycopg[binary]")
Optional: Erstellen Sie eine requirements.txt mit diesen Einträgen und installieren Sie python -m pip install -r requirements.txt für reproduzierbare Installationen.
Kopieren Sie den folgenden Code in einen Editor, und speichern Sie ihn in einer Datei namens get_conn.py.
import urllib.parse import os def get_connection_uri(): # Read URI parameters from the environment dbhost = os.environ['DBHOST'] dbname = os.environ['DBNAME'] dbuser = urllib.parse.quote(os.environ['DBUSER']) password = os.environ['DBPASSWORD'] sslmode = os.environ['SSLMODE'] db_uri = f"host={dbhost} dbname={dbname} user={dbuser} password={password} sslmode={sslmode}" # Construct connection URI return db_uriRufen Sie Informationen zu Datenbankverbindungen ab.
Verwenden des Azure-Portals:
Wählen Sie im linken Menü im Azure Portal All resources aus, und suchen Sie dann nach dem erstellten Cluster.
Wählen Sie den Clusternamen aus.
Wählen Sie im Ressourcenmenü die Option "Übersicht" aus. Zeigen Sie mit der Maus auf den Wert, der als primärer Endpunkt angezeigt wird (Lese-/Schreibzugriff), und wählen Sie die Schaltfläche "In Zwischenablage kopieren" aus .
Sollten Sie das Kennwort der Administrationsanmeldung vergessen, können Sie es über die Schaltfläche Kennwort zurücksetzen zurücksetzen.
Legen Sie Umgebungsvariablen für die URI-Elemente der Verbindung fest:
set DBHOST=<cluster-name> set DBNAME=<database-name> set DBUSER=<username> set DBPASSWORD=<password> set SSLMODE=require
Ausführen der Python-Beispiele
Führen Sie für jedes Codebeispiel in diesem Artikel die folgenden Schritte aus:
Erstellen Sie eine neue Datei in einem Text-Editor.
Fügen Sie der Datei das Codebeispiel hinzu.
Speichern Sie die Datei mit der Erweiterung .py in Ihrem Projektordner (Beispiel: postgres-insert.py). Achten Sie unter Windows darauf, dass beim Speichern die UTF-8-Codierung ausgewählt ist.
Geben Sie in Ihrem Projektordner
pythongefolgt vom Dateinamen ein, z. B.python postgres-insert.py.
Erstellen einer Tabelle und Einfügen von Daten
Im folgenden Codebeispiel wird eine Verbindung mit Ihrem Azure HorizonDB-Cluster mithilfe der funktion psycopg.connect hergestellt und Daten mit einer SQL-INSERT-Anweisung geladen. Die cursor.execute-Funktion führt die SQL-Abfrage für die Datenbank aus.
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Drop previous table of same name if one exists
cursor.execute("DROP TABLE IF EXISTS inventory;")
print("Finished dropping table (if existed)")
# Create a table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table")
# Insert some data into the table
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("orange", 154))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("apple", 100))
print("Inserted 3 rows of data")
# Clean up
conn.commit()
cursor.close()
conn.close()
Nach erfolgreicher Ausführung generiert der Code die folgende Ausgabe:
Connection established
Finished dropping table (if existed)
Finished creating table
Inserted 3 rows of data
Daten lesen
Im folgenden Codebeispiel wird eine Verbindung mit Ihrem Azure HorizonDB-Cluster hergestellt und "cursor.execute" mit der SQL-SELECT-Anweisung zum Lesen von Daten verwendet. Diese Funktion akzeptiert eine Abfrage und gibt ein Resultset zurück, das mithilfe von cursor.fetchall() durchlaufen werden kann.
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Fetch all rows from table
cursor.execute("SELECT * FROM inventory;")
rows = cursor.fetchall()
# Print all rows
for row in rows:
print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))
# Cleanup
conn.commit()
cursor.close()
conn.close()
Nach erfolgreicher Ausführung generiert der Code die folgende Ausgabe:
Connection established
Data row = (1, banana, 150)
Data row = (2, orange, 154)
Data row = (3, apple, 100)
Aktualisieren von Daten
Im folgenden Codebeispiel wird eine Verbindung mit Ihrem Azure HorizonDB-Cluster hergestellt und "cursor.execute" mit der SQL-UPDATE-Anweisung verwendet, um Daten zu aktualisieren.
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Update a data row in the table
cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (200, "banana"))
print("Updated 1 row of data")
# Cleanup
conn.commit()
cursor.close()
conn.close()
Daten löschen
Im folgenden Codebeispiel wird eine Verbindung mit Ihrem Azure HorizonDB-Cluster hergestellt und "cursor.execute" mit der SQL-DELETE-Anweisung verwendet, um ein zuvor eingefügtes Bestandselement zu löschen.
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Delete data row from table
cursor.execute("DELETE FROM inventory WHERE name = %s;", ("orange",))
print("Deleted 1 row of data")
# Cleanup
conn.commit()
cursor.close()
conn.close()