Správa služby Azure Database for PostgreSQL pomocí sady Azure SDK pro Python

V tomto rychlém startu se naučíte používat sadu Azure Python SDK k interakci s flexibilní instancí serveru Azure Database for PostgreSQL.

Azure Database for PostgreSQL je spravovaná služba pro spouštění, správu a škálování vysoce dostupných databází PostgreSQL v cloudu. Sadu Python SDK můžete použít ke zřízení instance flexibilního serveru Azure Database for PostgreSQL, více serverů nebo více databází na serveru.

S touto knihovnou můžete provádět následující operace:

  • Vytvoření instance flexibilního serveru PostgreSQL
  • Správa databází
  • Konfigurujte pravidla brány firewall
  • Provádění operací škálování
  • Zálohování a obnovení

Tato příručka vám pomůže prozkoumat základní funkce této sady SDK, včetně vytvoření flexibilní instance serveru, kontroly vytvořeného serveru, vytvoření databáze a odstranění instance.

Prerequisites

Účet s aktivním předplatným

Účet Azure s aktivním předplatným. Vytvořte si ho zdarma.

Instalace knihoven

Nainstalujte následující knihovny Azure Pythonu.

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

Spuštění příkazu login

Přihlaste se ke svému účtu pomocí azurecli k ověření.

az login

Po spuštění tohoto příkazu vyberte platný účet, který se má přihlásit, a později v seznamu vyberte ID předplatného, ke které se chcete přihlásit.

Vytvoření serveru

Vytvořte create_postgres_flexible_server.py soubor a vložte následující kód.

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

Nahraďte následující parametry vašimi daty:

  • subscription-id: Vaše vlastní ID předplatného.
  • skupina prostředků: Pojmenujte skupinu prostředků, kterou chcete použít. Pokud neexistuje, skript vytvoří nový.
  • název serveru: Jedinečný název, který identifikuje instanci flexibilního serveru Azure Database for PostgreSQL. Název domény postgres.database.azure.com se připojí k zadanému názvu serveru. Název serveru musí mít alespoň tři znaky a maximálně 63 znaků a může obsahovat jenom malá písmena, číslice a pomlčky.
  • Umístění: Oblast Azure, ve které chcete vytvořit instanci flexibilního serveru Azure Database for PostgreSQL. Definuje zeměpisné umístění, kde se nachází váš server a jeho data. Zvolte oblast blízko uživatelům, aby se snížila latence. Umístění by mělo být zadáno ve formátu krátkých názvů oblastí Azure, například westus2, eastusnebo northeurope.
  • admin-username: Primární uživatelské jméno správce serveru. Po vytvoření serveru můžete vytvořit další uživatele.
  • heslo: Heslo pro primárního správce serveru. Musí mít 8 až 128 znaků. Heslo musí obsahovat znaky ze tří kategorií: velká písmena anglické abecedy, malá písmena anglické abecedy, číslice (0 až 9) a neosamocené znaky (!, $, #, %atd.).

Můžete také přidat hodnoty pro další parametry, jako je název virtuální sítě, název podsítě, privátní zóna DNS, a přizpůsobit další parametry, jako je velikost úložiště, verze modulu atd.

Note

DefaultAzureCredential třída se pokouší ověřit pomocí různých metod, jako jsou proměnné prostředí, spravované identity nebo Azure CLI.
Ujistěte se, že máte nastavenou jednu z těchto metod. Další informace o ověřování najdete v dokumentaci k sadě Azure SDK.

Spuštěním tohoto kódu zahájíte proces vytváření instance, což může trvat několik minut.

Kontrola nasazených prostředků

K ověření nasazení a kontrole nasazených prostředků můžete použít sadu Python SDK, Azure Portal, Azure CLI, Azure PowerShell a různé další nástroje. Níže jsou uvedeny některé příklady.

Ověření nasazení pomocí sady Python SDK

Přidejte do existujícího check_server_created skriptu funkci pro použití atributu serverů instance PostgreSQLManagementClient a zkontrolujte, jestli se vytvořila instance flexibilního serveru Azure Database for PostgreSQL:

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}'.")

Volejte ho s příslušnými parametry.

 check_server_created(subscription_id, resource_group, server_name)

Note

Funkce check_server_created vrátí stav serveru ihned po zřízení serveru. Může ale trvat několik minut, než bude server plně dostupný. Než se k němu připojíte, ujistěte se, že čekáte, až bude server připravený. Vrátí stav, ID, název, umístění a další parametry v reakci na metodu postgres_client.servers.get.

Vytvoření databáze pomocí Pythonu

Vytvoření databáze v instanci flexibilního serveru pomocí tohoto ukázkového kódu

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

Nahraďte následující parametry vašimi údaji.

  • subscription-id: Vaše vlastní ID předplatného.
  • název skupiny prostředků: Pojmenujte skupinu prostředků, kterou chcete použít. Skript vytvoří novou skupinu prostředků, pokud tato ještě neexistuje.
  • název-serveru: Název instance flexibilního serveru Azure, kterou jste vytvořili dříve
  • název databáze: Název databáze, kterou chcete vytvořit.

Vyčistěte zdroje

Pokud už instanci flexibilního serveru Azure Database for PostgreSQL nepotřebujete, můžete ji odstranit a přidruženou skupinu prostředků pomocí portálu, sady Python SDK nebo Azure CLI.

Odstranění instance pomocí sady Python SDK

Vytvořte soubor delete_server.py pro odstranění instance serveru Azure Database for PostgreSQL, která byla vytvořena.

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