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 einem Azure Database for PostgreSQL flexiblen Server 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 schließen zwei Authentifizierungsmethoden ein: die Microsoft Entra-Authentifizierung und die PostgreSQL-Authentifizierung. Die Registerkarte Kennwortlos zeigt die Microsoft Entra-Authentifizierung und die Registerkarte Kennwort die PostgreSQL-Authentifizierung.
Die Microsoft Entra-Authentifizierung ist ein Mechanismus zum Herstellen einer Verbindung mit Azure Database for PostgreSQL unter Verwendung von Identitäten, die in Microsoft Entra ID definiert sind. Mit der Microsoft Entra-Authentifizierung können Sie Datenbankbenutzeridentitäten und andere Microsoft-Dienste an einem zentralen Ort verwalten, wodurch die Berechtigungsverwaltung vereinfacht wird. Weitere Informationen finden Sie unter Microsoft Entra-Authentifizierung mit Azure Database for PostgreSQL.
Die PostgreSQL-Authentifizierung verwendet Konten, die in PostgreSQL gespeichert sind. Wenn Sie Kennwörter als Anmeldeinformationen für die Konten verwenden, werden diese Anmeldeinformationen in der Tabelle user gespeichert. Da diese Kennwörter in PostgreSQL gespeichert sind, müssen Sie 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 neu bei der Arbeit mit Azure Database for PostgreSQL.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Kostenlos ein Konto erstellen.
- Ein flexibler Server für Azure Database for PostgreSQL. Informationen zum Erstellen eines Azure Database for PostgreSQL Flexible Server finden Sie in Erstellen eines Azure Database for PostgreSQL Flexible Server.
- Python 3,8+.
- Aktuelles pip-Paketinstallationsprogramm.
Hinzufügen von Firewallregeln für Ihre Clientarbeitsstation
- Wenn Sie Ihren Azure Database for PostgreSQL flexiblen Server mit privatem Zugriff (Virtual Network Integration) erstellt haben, müssen Sie über eine Ressource innerhalb desselben virtuellen Netzwerks wie Ihr Server eine Verbindung mit Ihrem Server herstellen. Sie können einen virtuellen Computer erstellen und dem virtuellen Netzwerk hinzufügen, das mit Ihrem Azure Database for PostgreSQL flexiblen Server erstellt wurde. Verweisen Sie auf Netzwerk.
- Wenn Sie Ihren Azure Database for PostgreSQL flexiblen Server mit öffentlichem Zugriff (zulässige IP-Adressen) erstellt haben, können Sie Ihre lokale IP-Adresse zur Liste der Firewallregeln auf Ihrem Server hinzufügen. Verweisen Sie auf Netzwerk.
Konfigurieren der Microsoft Entra-Integration auf dem Server (nur kennwortlos)
Wenn Sie die Schritte für die kennwortlose Authentifizierung ausführen, muss Microsoft Entra Authentifizierung für Ihren Server konfiguriert sein, und Sie müssen als Microsoft Entra Administrator auf dem Server zugewiesen werden. Führen Sie die Schritte unter Konfigurieren Microsoft Entra Integration aus, um sicherzustellen, dass Microsoft Entra Authentifizierung konfiguriert ist und dass Sie als Microsoft Entra Administrator auf Ihrem Server zugewiesen sind.
Vorbereiten Ihrer Entwicklungsumgebung
Wechseln Sie zu einem Ordner, in dem Sie den Code ausführen möchten. Erstellen und Aktivieren einer virtuellen Umgebung 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 die azure-identity-Bibliothek, die Microsoft Entra-Tokenauthentifizierungsunterstützung für das Azure SDK bereitstellt.
# Use the interpreter-bound pip to ensure installs go into the active venv/interpreter
python -m pip install --upgrade pip
python -m pip install azure-identity azure-keyvault-secrets
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 Ihrem Server 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):
- Kennwortloses Beispiel:
azure-identity,azure-keyvault-secrets(wenn Sie Key Vault verwenden) - 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 from azure.identity import DefaultAzureCredential # IMPORTANT! This code is for demonstration purposes only. It's not suitable for use in production. # For example, tokens issued by Microsoft Entra ID have a limited lifetime (24 hours by default). # In production code, you need to implement a token refresh policy. 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']) sslmode = os.environ['SSLMODE'] # Use passwordless authentication via DefaultAzureCredential. # IMPORTANT! This code is for demonstration purposes only. DefaultAzureCredential() is invoked on every call. # In practice, it's better to persist the credential across calls and reuse it so you can take advantage of token # caching and minimize round trips to the identity provider. To learn more, see: # https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/identity/azure-identity/TOKEN_CACHING.md credential = DefaultAzureCredential() # Call get_token() to get a token from Microsft Entra ID and add it as the password in the URI. # Note the requested scope parameter in the call to get_token, "https://ossrdbms-aad.database.windows.net/.default". password = credential.get_token("https://ossrdbms-aad.database.windows.net/.default").token db_uri = f"postgresql://{dbuser}:{password}@{dbhost}/{dbname}?sslmode={sslmode}" return db_uriRufen Sie Informationen zu Datenbankverbindungen ab.
- Suchen Sie im Azure-Portal nach dem Namen Ihrer Instanz von Azure Database for PostgreSQL Flexible Server, und wählen Sie ihn aus.
- Kopieren Sie auf der Seite Übersicht des Servers den vollqualifizierten Servernamen. Der vollqualifizierte Servername hat immer das Format <Servername>.postgres.database.azure.com.
- Wählen Sie im linken Menü unter SicherheitAuthentifizierung aus. Stellen Sie sicher, dass Ihr Konto unter Microsoft Entra-Administratoren aufgeführt ist. Führen Sie andernfalls die Schritte im Abschnitt Konfigurieren der Microsoft Entra-Integration auf dem Server (nur kennwortlos) aus.
Legen Sie Umgebungsvariablen für die URI-Elemente der Verbindung fest:
set DBHOST=<server-name> set DBNAME=<database-name> set DBUSER=<username> set SSLMODE=requireMelden Sie sich auf Ihrer Arbeitsstation bei Azure an. Sie können sich mithilfe der Azure CLI oder mithilfe von Azure PowerShell oder Azure Developer CLI anmelden.
Der Authentifizierungscode verwendet
DefaultAzureCredential, um sich mit Microsoft Entra ID zu authentifizieren und ein Token abzurufen, das Sie zum Ausführen von Vorgängen auf Ihrem Server autorisiert.DefaultAzureCredentialunterstützt eine Kette von Anmeldeinformationstypen für die Authentifizierung. Zu den unterstützten Anmeldeinformationen gehören Anmeldeinformationen, die Sie bei Entwicklertools mithilfe der Azure CLI, Azure PowerShell oder Azure Developer CLI anmelden.
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
pythonim Projektordner gefolgt vom Dateinamen ein, z. Bpython postgres-insert.py. .
Erstellen einer Tabelle und Einfügen von Daten
Im folgenden Codebeispiel wird mithilfe der psycopg.connect-Funktion eine Verbindung mit Ihrer Datenbank von Azure Database for PostgreSQL Flexible Server hergestellt. Zudem werden Daten mit einer INSERT-SQL-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 Ihrer Azure Database for PostgreSQL Flexible Server-Datenbankinstanz hergestellt und cursor.execute mit der SQL-Anweisung SELECT verwendet, um Daten zu lesen. 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 Ihrer Azure Database for PostgreSQL Flexible Server-Datenbankinstanz hergestellt und cursor.execute mit der SQL-Anweisung UPDATE 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()
Löschen von Daten
Im folgenden Codebeispiel wird eine Verbindung mit Ihrer Azure Database for PostgreSQL Flexible Server-Datenbankinstanz hergestellt und cursor.execute mit der SQL-Anweisung DELETE 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()
Verwandte Inhalte
- Schnellstart: Verwenden von Java und JDBC mit Azure Database für PostgreSQL
- Schnellstart: Verwenden von .NET (C#) zum Verbinden und Abfragen von Daten in Azure-Datenbank für PostgreSQL
- Schnellstart: Verwenden der Go-Sprache zum Verbinden und Abfragen von Daten in Azure-Datenbank für PostgreSQL
- Schnellstart: Verwenden von PHP zum Verbinden und Abfragen von Daten in der Azure-Datenbank für PostgreSQL
- Schnellstart: Verbinden und Abfragen mit Azure CLI mit Azure Database for PostgreSQL
- Schnellstart: Importieren von Daten aus der Azure-Datenbank für PostgreSQL in Power BI