Compartilhar via


Início Rápido: Usar bibliotecas do Azure (SDK) para Python para gerenciar um Banco de Dados do Azure para PostgreSQL

Neste início rápido, você aprenderá a usar o SDK do Python do Azure para interagir com uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.

O Banco de Dados do Azure para PostgreSQL é um serviço gerenciado para execução, gerenciamento e dimensionamento de bancos de dados PostgreSQL altamente disponíveis na nuvem. Você pode usar o SDK do Python para provisionar uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL, vários servidores ou vários bancos de dados em um servidor.

É possível realizar as seguintes operações com esta biblioteca:

  1. Criando uma instância de servidor flexível do PostgreSQL
  2. Gerenciar bancos de dados
  3. Configurar regras de firewall
  4. Operações de dimensionamento
  5. Backup e Restauração

Este guia ajuda você a explorar as funcionalidades básicas desse SDK, incluindo a criação de uma instância de servidor flexível, a revisão do servidor criado, a criação de um banco de dados e a exclusão da instância.

Pré-requisitos

Uma conta com assinatura ativa

Uma conta do Azure com uma assinatura ativa Crie uma conta gratuitamente.

Instalar as bibliotecas

Instale as seguintes bibliotecas Python do Azure.

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

Execute o comando de login

Faça logon em sua conta usando azurecli para autenticar sua conta.

az login

Depois que esse comando for executado, selecione uma conta válida para entrar e, posteriormente, selecione a ID da assinatura na lista para fazer logon.

Criar o servidor

Crie um arquivo create_postgres_flexible_server.py com o seguinte código.

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

Substitua os seguintes parâmetros com seus dados:

  • subscription_id: sua própria ID de assinatura.
  • resource_group: o nome do grupo de recursos que você deseja usar. Se ele não existir, o script criará um novo.
  • server_name: um nome exclusivo que identifica sua instância do servidor flexível do Banco de Dados do Azure para PostgreSQL. O nome de domínio postgres.database.azure.com será adicionado ao nome do servidor inserido. O nome do servidor deve ter no mínimo três e no máximo 63 caracteres, e só pode conter letras minúsculas, números e hifens.
  • Location: a região do Azure em que você deseja criar sua instância do servidor flexível do Banco de Dados do Azure para PostgreSQL. Ele define a localização geográfica em que o servidor e seus dados residem. Escolha uma região próxima aos usuários para reduzir a latência. O local deve ser especificado no formato de nomes curtos da região do Azure, como westus2, eastus ou northeurope.
  • admin-username: o nome de usuário do administrador primário para o servidor. Você pode criar usuários adicionais depois que o servidor tiver sido criado.
  • password: uma senha para o administrador primário para o servidor. Ele deve conter entre 8 e 128 caracteres. A senha deve conter caracteres das três seguintes categorias: letras maiúsculas, letras minúsculas, números (0 a 9) e caracteres não alfanuméricos (!, $, #, %, etc.).

Você também pode adicionar valores para outros parâmetros, como nome da vnet, nome da sub-rede, zona DNS privada e personalizar outros parâmetros, como tamanho de armazenamento, versão do mecanismo etc.

Observação

A classe DefaultAzureCredential tentará se autenticar usando vários métodos, como variáveis de ambiente, identidades gerenciadas ou a CLI do Azure.
Certifique-se de que você tenha um desses métodos configurado. Você pode encontrar mais informações sobre autenticação na Documentação do SDK do Azure.

A execução deste código iniciará o processo de criação da instância, que pode levar alguns minutos para ser concluído.

Examinar os recursos implantados

Você pode usar o SDK do Python, o portal do Azure, a CLI do Azure, o Azure PowerShell e várias outras ferramentas para validar a implantação e examinar os recursos implantados. Alguns exemplos são fornecidos abaixo.

Validar a implantação com o SDK do Python

Adicione a função check_server_created ao script existente para usar o atributo de servidores da instância PostgreSQLManagementClient para verificar se a instância de servidor flexível do Banco de Dados do Azure para PostgreSQL foi criada:

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

Chame-o com os parâmetros apropriados.

 check_server_created(subscription_id, resource_group, server_name)

Observação

A função check_server_created retornará o estado do servidor assim que o servidor for provisionado. Mas pode levar alguns minutos para que o servidor fique totalmente disponível. Aguarde até que o servidor esteja pronto antes de se conectar a ele. Ele retornaria os parâmetros state, id, name, location etc. na resposta ao método postgres_client.servers.get.

Criar banco de dados usando o Python

Criar um banco de dados em sua instância de servidor flexível com este código de exemplo

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

Substitua os seguintes parâmetros com seus dados

  • subscription_id: sua própria ID de assinatura.
  • resource_group: o nome do grupo de recursos que você deseja usar. O script criará um novo grupo de recursos se ele não existir.
  • sever-name: o nome da instância do servidor flexível do banco de dados do Azure que você criou anteriormente
  • database-name: o nome do banco de dados que você deseja criar.

Limpar os recursos

Se você não precisar mais da instância do servidor flexível do Banco de Dados do Azure para PostgreSQL, pode excluí-la, junto com grupo de recursos associado, usando o Portal, o SDK do Python ou a CLI do Azure.

Usar o SDK do Python para excluir a instância

Crie um arquivo "delete_server.py" para excluir a instância do Servidor de Bancos de Dados do Azure para PostgreSQL que foi criada.

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