Freigeben über


Verwalten von Azure-Datenbank für PostgreSQL mit Azure SDK für Python

In dieser Schnellstartanleitung erfahren Sie, wie Sie das Azure Python SDK verwenden, um mit einer flexiblen Serverinstanz von Azure Database für PostgreSQL zu interagieren.

Azure Database for PostgreSQL ist ein verwalteter Dienst zum Ausführen, Verwalten und Skalieren hoch verfügbarer PostgreSQL-Datenbanken in der Cloud. Sie können das Python SDK verwenden, um eine Azure-Datenbank für PostgreSQL-Flexible-Serverinstanz, mehrere Server oder mehrere Datenbanken auf einem Server bereitzustellen.

Mit dieser Bibliothek können Sie die folgenden Vorgänge durchführen:

  • Erstellen einer flexiblen Serverinstanz von PostgreSQL
  • Verwalten von Datenbanken
  • Konfigurieren von Firewallregeln
  • Ausführen von Skalierungsvorgängen
  • Sichern und Wiederherstellen

Diese Anleitung hilft Ihnen dabei, die grundlegenden Funktionen dieses SDK zu erkunden, einschließlich des Erstellens einer flexiblen Serverinstanz, des Überprüfens des erstellten Servers, des Erstellens einer Datenbank und des Löschens der Instanz.

Voraussetzungen

Konto mit einem aktiven Abonnement

Ein Azure-Konto mit einem aktiven Abonnement. Erstellen Sie ein kostenloses Konto.

Installieren der Bibliotheken

Installieren Sie die folgenden Azure Python-Bibliotheken.

pip install azure-mgmt-resource
pip install azure-identity
pip install azure-mgmt-postgresqlflexibleservers

Ausführen des Anmeldebefehls

Melden Sie sich mit azurecli bei Ihrem Konto an, um es zu authentifizieren.

az login

Sobald dieser Befehl ausgeführt wurde, wählen Sie ein gültiges Konto zum Anmelden aus, und wählen Sie später die Abonnement-ID aus der Liste aus, um sich anzumelden.

Erstellen des Servers

Erstellen Sie eine create_postgres_flexible_server.py-Datei, und fügen Sie den folgenden Code ein.

from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient

def main():
    client = PostgreSQLManagementClient(
        credential=DefaultAzureCredential(),
        subscription_id="<subscription-id>",
    )

    response = client.servers.begin_create(
        resource_group_name="<resource-group-name>",
        server_name="<server-name>",
        parameters={
            "location": "<region>",
            "properties": {
                "administratorLogin": "<admin-username>",
                "administratorLoginPassword": "<password>",
                "availabilityZone": "1",
                "backup": {"backupRetentionDays": 7, "geoRedundantBackup": "Disabled"},
                "createMode": "Create",
                "highAvailability": {"mode": "ZoneRedundant"},
                "network": {
                    "delegatedSubnetResourceId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>",
                    "privateDnsZoneArmResourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Network/privateDnsZones/<private-DNS-zone-name>.postgres.database.azure.com",
                },
                "version": "<pg-version>",
            },
            "sku": {"name": "<sku-name>", "tier": "<tier-type>"},
            "tags": {"ElasticServer": "1"},
        },
    ).result()
    print(response)

if __name__ == "__main__":
    main()

Ersetzen Sie die folgenden Parameter durch eigene Daten:

  • subscription-id: Ihre eigene Abonnement-ID.
  • resource-group: Name der Ressourcengruppe, die Sie verwenden möchten. Wenn sie nicht vorhanden ist, erstellt das Skript eine neue.
  • server_name Ein eindeutiger Name, der Ihre Instanz des flexiblen Azure Database for PostgreSQL-Servers identifiziert. Der Domänenname postgres.database.azure.com wird an den von Ihnen angegebenen Servernamen angefügt. Der Servername muss mindestens drei Zeichen und höchstens 63 Zeichen umfassen und darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.
  • Standort: Die Azure-Region, in der Sie die Instanz des flexiblen Azure Database for PostgreSQL-Servers erstellen möchten. Sie definiert den geografischen Standort, an dem sich Ihr Server und dessen Daten befinden. Wählen Sie eine Region in der Nähe Ihrer Benutzer*innen aus, um die Latenz zu verringern. Der Standort sollte im Format der Kurznamen für Azure-Regionen angegeben werden, z. B. westus2, eastus oder northeurope.
  • admin-username: Der Benutzername des primären Administrators für den Server. Nachdem der Server erstellt wurde, können Sie weitere Benutzer erstellen.
  • Kennwort: Legen Sie ein Kennwort für den primären Administrator für den Server fest. Es muss zwischen acht und 128 Zeichen lang sein. Ihr Kennwort muss Zeichen aus drei Kategorien enthalten: lateinische Großbuchstaben, lateinische Kleinbuchstaben, Zahlen (0-9) und nicht-alphanumerische Zeichen (!, $, #, % usw.).

Sie können auch Werte für andere Parameter wie VNet-Name, Subnetzname und private DNS-Zone hinzufügen und andere Parameter wie Speichergröße, Modulversion usw. anpassen.

Hinweis

Die DefaultAzureCredential-Klasse versucht, sich mit verschiedenen Methoden zu authentifizieren, z. B. Umgebungsvariablen, verwaltete Identitäten oder die Azure CLI.
Stellen Sie sicher, dass Sie eine dieser Methoden eingerichtet haben. Weitere Informationen zur Authentifizierung finden Sie in der Dokumentation zum Azure SDK.

Wenn Sie diesen Code ausführen, wird der Instanzerstellungsprozess initiiert, der einige Minuten dauern kann.

Überprüfen der bereitgestellten Ressourcen

Sie können das Python SDK, das Microsoft Azure-Portal, die Azure-Befehlszeilenschnittstelle, die Azure PowerShell und verschiedene andere Tools verwenden, um die Bereitstellung zu überprüfen und die bereitgestellten Ressourcen anzuzeigen. Einige Beispiele finden Sie weiter unten.

Überprüfen der Bereitstellung mit dem Python SDK

Fügen Sie die Funktion check_server_created Ihrem vorhandenen Skript hinzu, um das Serverattribut der PostgreSQLManagementClient-Instanz zu verwenden und zu überprüfen, ob die Instanz des flexiblen Azure Database for PostgreSQL-Servers erstellt wurde:

def check_server_created(subscription_id, resource_group, server_name):
    # Authenticate with your Azure account
    credential = DefaultAzureCredential()

    # Create PostgreSQL management client
    postgres_client = PostgreSQLManagementClient(credential, subscription_id)

    try:
        server = postgres_client.servers.get(resource_group, server_name)
        if server:
            print(f"Server '{server_name}' exists in resource group '{resource_group}'.")
            print(f"Server state: {server.state}")
        else:
            print(f"Server '{server_name}' not found in resource group '{resource_group}'.")
    except Exception as e:
        print(f"Error occurred: {e}")
        print(f"Server '{server_name}' not found in resource group '{resource_group}'.")

Führen Sie es mit den entsprechenden Parametern aus.

 check_server_created(subscription_id, resource_group, server_name)

Hinweis

Die Funktion check_server_created gibt den Serverstatus zurück, sobald der Server bereitgestellt wurde. Es kann jedoch einige Minuten dauern, bis der Server vollständig verfügbar ist. Sie müssen warten, bis der Server bereit ist, bevor Sie eine Verbindung mit ihm herstellen. Es werden die Parameter Status, ID, Name, Standort usw. in der Antwort auf die Methode „postgres_client.servers.get“ zurückgegeben.

Erstellen einer Datenbank mit Python

Erstellen einer Datenbank in Ihrer flexiblen Serverinstanz mit diesem Beispielcode

from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient

def main():
    client = PostgreSQLManagementClient(
        credential=DefaultAzureCredential(),
        subscription_id=<subscription-id>,
    )
    # Create database
    response = client.databases.begin_create(
        resource_group_name="<resource-group-name>",
        server_name="<server-name>",
        database_name="<database-name>",
        parameters={"properties": {"charset": "utf8", "collation": "en_US.utf8"}},
    ).result()
    print(response)

if __name__ == "__main__":
    main()

Ersetzen Sie die folgenden Parameter durch eigene Daten

  • subscription_id: Ihre eigene Abonnement-ID.
  • resource-group-name: Name der Ressourcengruppe, die Sie verwenden möchten. Das Skript erstellt eine neue Ressourcengruppe, falls sie nicht vorhanden ist.
  • server-name: Der Name der flexiblen Serverinstanz der Azure-Datenbank, die Sie zuvor erstellt haben
  • database-name: Der Name der Datenbank, die Sie erstellen möchten.

Bereinigen von Ressourcen

Wenn Sie die flexible Serverinstanz von Azure Database for PostgreSQL nicht mehr benötigen, können Sie sie und die zugeordnete Ressourcengruppe entweder über das Portal, das Python SDK oder die Azure CLI löschen.

Verwenden des Python SDK zum Löschen der Instanz

Erstellen Sie eine „delete_server.py“-Datei, um die Instanz von Azure Database for PostgreSQL Server zu löschen, die erstellt wurde.

from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient

def main():
    client = PostgreSQLManagementClient(
          credential=DefaultAzureCredential(),
          subscription_id=<subscription-id>,)
    client.servers.begin_delete(
          resource_group_name=<rg-name>,
          server_name=<server-name>,
    ).result()
if __name__ == "__main__":
    main()