Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste guia de início rápido, estabelece uma ligação a um servidor flexível do Base de Dados do Azure para PostgreSQL com Python. Em seguida, você usa instruções SQL para consultar, inserir, atualizar e excluir dados no banco de dados das plataformas macOS, Ubuntu Linux e Windows.
As etapas neste artigo incluem dois métodos de autenticação: autenticação Microsoft Entra e autenticação PostgreSQL. A guia Sem senha mostra a autenticação do Microsoft Entra e a guia Senha mostra a autenticação do PostgreSQL.
A autenticação do Microsoft Entra é um mecanismo para se conectar ao Banco de Dados do Azure para PostgreSQL usando identidades definidas na ID do Microsoft Entra. Com a autenticação do Microsoft Entra, você pode gerenciar identidades de usuário de banco de dados e outros serviços da Microsoft em um local central, o que simplifica o gerenciamento de permissões. Para saber mais, consulte Autenticação do Microsoft Entra com o Banco de Dados do Azure para PostgreSQL.
A autenticação do PostgreSQL usa contas armazenadas no PostgreSQL. Se você optar por usar senhas como credenciais para as contas, essas credenciais serão armazenadas na user tabela. Como essas senhas são armazenadas no PostgreSQL, você precisa gerenciar a rotação das senhas sozinho.
Este artigo pressupõe que você esteja familiarizado com o desenvolvimento usando Python, mas é novo no trabalho com o Banco de Dados do Azure para PostgreSQL.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Um servidor flexível do Base de Dados do Azure para PostgreSQL. Para criar um servidor flexível Base de Dados do Azure para PostgreSQL, consulte Criar uma Base de Dados Base de Dados do Azure para PostgreSQL.
- Python 3,8+.
- Instalador de pacote pip mais recente.
Adicionar regras de firewall para a estação de trabalho cliente
- Se criou o seu servidor flexível do Base de Dados do Azure para PostgreSQL com Acesso privado (Integração na rede virtual), tem de se ligar ao servidor a partir de um recurso na mesma rede virtual do servidor. Pode criar uma máquina virtual e adicioná-la à rede virtual criada com o seu servidor flexível Base de Dados do Azure para PostgreSQL. Consulte Networking.
- Se criaste o teu servidor flexível Base de Dados do Azure para PostgreSQL com acesso público (endereços IP permitidos), podes adicionar o teu endereço IP local à lista de regras de firewall no teu servidor. Consulte Networking.
Configurar a integração do Microsoft Entra no servidor (somente sem senha)
Se estiver a seguir os passos para a autenticação sem palavra-passe, a autenticação do Microsoft Entra tem de estar configurada para o seu servidor e tem de lhe ter sido atribuída a função de administrador do Microsoft Entra no servidor. Siga os passos em Configurar a integração com o Microsoft Entra para garantir que a autenticação do Microsoft Entra está configurada e que lhe foi atribuída a função de administrador do Microsoft Entra no seu servidor.
Prepare seu ambiente de desenvolvimento
Muda para uma pasta onde queres executar o código. Crie e ative um ambiente virtual. Um ambiente virtual é um diretório autônomo para uma versão específica do Python mais os outros pacotes necessários para esse aplicativo.
Execute os seguintes comandos para criar e ativar um ambiente virtual:
py -3 -m venv .venv
.venv\Scripts\activate
Instalar as bibliotecas Python
Instale as bibliotecas Python necessárias para executar os exemplos de código.
Instale a biblioteca azure-identity , que fornece suporte à autenticação de token do Microsoft Entra no SDK do Azure.
# 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
Adicionar código de autenticação
Nesta secção, adiciona código de autenticação ao seu diretório de trabalho e executa quaisquer passos adicionais necessários para autenticação e autorização com o seu servidor.
Antes de adicionar o código de autenticação, verifique se os pacotes necessários para cada exemplo estão instalados.
Pacotes obrigatórios (exemplos neste artigo):
- Exemplo sem palavra-passe:
azure-identity,azure-keyvault-secrets(se utilizar o Key Vault) - Exemplo de senha:
psycopg(recomendado:python -m pip install "psycopg[binary]")
Opcional: crie um requirements.txt com essas entradas e instale com python -m pip install -r requirements.txt para instalações reproduzíveis.
Copie o código a seguir em um editor e salve-o em um arquivo chamado 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_uriObtenha informações de conexão com o banco de dados.
- No portal do Azure, procure e selecione o nome do servidor flexível do Banco de Dados do Azure para PostgreSQL.
- Na página Visão geral do servidor, copie o nome do servidor totalmente qualificado. O nome do servidor totalmente qualificado é sempre do formato <my-server-name.postgres.database.azure.com>.
- No menu à esquerda, em Segurança, selecione Autenticação. Verifique se sua conta está listada em Administradores do Microsoft Entra. Se não estiver, conclua as etapas em Configurar a integração do Microsoft Entra no servidor (somente sem senha).
Defina variáveis de ambiente para os elementos URI de conexão:
set DBHOST=<server-name> set DBNAME=<database-name> set DBUSER=<username> set SSLMODE=requireEntre no Azure em sua estação de trabalho. Você pode entrar usando a CLI do Azure, o Azure PowerShell ou a CLI do Desenvolvedor do Azure.
O código de autenticação utiliza
DefaultAzureCredentialpara se autenticar no Microsoft Entra ID e obter um token que o autoriza a executar operações no seu servidor.DefaultAzureCredentialsuporta uma cadeia de tipos de credenciais de autenticação. Entre as credenciais que suporta estão credenciais que utilizas em ferramentas de programação, como a CLI do Azure, Azure PowerShell ou Azure Developer CLI.
Como executar os exemplos Python
Para cada exemplo de código neste artigo:
Crie um novo arquivo em um editor de texto.
Adicione o exemplo de código ao arquivo.
Salve o arquivo na pasta do projeto com uma extensão .py , como postgres-insert.py. Para Windows, certifique-se de que a codificação UTF-8 está selecionada quando você salva o arquivo.
Na pasta do seu projeto, escreva
pythonseguido do nome do ficheiro, porpython postgres-insert.pyexemplo .
Criar uma tabela e inserir dados
O exemplo de código seguinte liga-se à base de dados do seu servidor flexível do Base de Dados do Azure para PostgreSQL com a função psycopg.connect e carrega dados com uma instrução SQL INSERT. A cursor.execute função executa a consulta SQL no banco de dados.
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()
Quando o código é executado com êxito, ele produz a seguinte saída:
Connection established
Finished dropping table (if existed)
Finished creating table
Inserted 3 rows of data
Ler dados
O exemplo de código seguinte liga-se à base de dados do seu servidor flexível do Base de Dados do Azure para PostgreSQL e utiliza cursor.execute com a instrução SQL SELECT para ler dados. Esta função aceita uma consulta e retorna um conjunto de resultados para iterar usando cursor.fetchall().
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()
Quando o código é executado com êxito, ele produz a seguinte saída:
Connection established
Data row = (1, banana, 150)
Data row = (2, orange, 154)
Data row = (3, apple, 100)
Atualizar dados
O exemplo de código seguinte liga-se à base de dados do servidor flexível do Base de Dados do Azure para PostgreSQL e utiliza cursor.execute com a instrução SQL UPDATE para atualizar os dados.
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()
Eliminar dados
O exemplo de código seguinte liga-se à base de dados do seu servidor flexível do Base de Dados do Azure para PostgreSQL e utiliza cursor.execute com a instrução SQL DELETE para eliminar um item de inventário que inseriu anteriormente.
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()
Conteúdo relacionado
- Guia de início rápido: usar Java e JDBC com o Banco de Dados do Azure para PostgreSQL
- Guia de início rápido: use o .NET (C#) para conectar e consultar dados no Banco de Dados do Azure para PostgreSQL
- Guia de início rápido: usar o idioma Go para conectar e consultar dados no Banco de Dados do Azure para PostgreSQL
- Guia de início rápido: usar PHP para conectar e consultar dados no Banco de Dados do Azure para PostgreSQL
- Guia de início rápido: ligar-se e fazer consultas utilizando a linha de comandos do Azure com o Banco de Dados do Azure para PostgreSQL
- Guia de início rápido: importar dados do Banco de Dados do Azure para PostgreSQL no Power BI