Início rápido: Use Python para ligar e consultar dados para o Azure HorizonDB (Pré-visualização)

Neste início rápido, estabelece ligação a uma instância do Azure HorizonDB utilizando 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.

Os passos deste artigo incluem autenticação PostgreSQL.

A autenticação PostgreSQL usa contas armazenadas no PostgreSQL e tens de gerir a rotação das palavras-passe por ti próprio.

Este artigo parte do princípio de que está familiarizado com o desenvolvimento usando Python, mas é novo a trabalhar com o Azure HorizonDB.

Pré-requisitos

Adicionar regras de firewall para a estação de trabalho cliente

  • Se criou o seu cluster Azure HorizonDB com acesso público (endereços IP permitidos), pode adicionar o seu endereço IP local à lista de regras de firewall no seu cluster. Consulte Rede no Azure HorizonDB (Pré-visualização).

Prepare seu ambiente de desenvolvimento

Mude para uma pasta onde você deseja executar o código e criar e ativar 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 o módulo psycopg , que permite conectar e consultar um banco de dados PostgreSQL.

# Recommended: install the binary wheel that bundles a compatible libpq wrapper (Windows/macOS)
python -m pip install "psycopg[binary]"

# Linux alternative (if you prefer building against system libpq):
sudo apt-get update
sudo apt-get install -y libpq-dev build-essential python3-dev
python -m pip install psycopg

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 a instância do cluster.

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 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.

  1. Copie o código a seguir em um editor e salve-o em um arquivo chamado get_conn.py.

    import urllib.parse
    import os
    
    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'])
    password = os.environ['DBPASSWORD']
    sslmode = os.environ['SSLMODE']
    db_uri = f"host={dbhost} dbname={dbname} user={dbuser} password={password} sslmode={sslmode}"
       # Construct connection URI
       return db_uri
    
  2. Obtenha informações de conexão com o banco de dados.

    Usando o portal do Azure:

    1. No menu esquerdo Azure portal, selecione Todos os recursos e depois procure o cluster que criou.

    2. Selecione o nome do cluster.

    3. No menu de recursos, selecione Visão geral. Mova o rato sobre o valor apresentado como Ponto final primário (leitura/escrita) e selecione o botão Copiar para a área de transferência.

      Captura de ecrã que mostra o valor do endpoint principal na página de Visão Geral.

    4. Se esquecer da palavra-passe do login de administrador, pode redefini-la utilizando o botão Repor palavra-passe.

      Captura de tela mostrando o botão Redefinir senha na página Visão geral.

  3. Defina variáveis de ambiente para os elementos URI de conexão:

    set DBHOST=<cluster-name>
    set DBNAME=<database-name>
    set DBUSER=<username>
    set DBPASSWORD=<password>
    set SSLMODE=require
    

Como executar os exemplos Python

Para cada exemplo de código neste artigo:

  1. Crie um novo arquivo em um editor de texto.

  2. Adicione o exemplo de código ao arquivo.

  3. 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.

  4. Na pasta do projeto, escreva python seguido do nome do ficheiro, por exemplo python postgres-insert.py.

Criar uma tabela e inserir dados

O exemplo de código seguinte liga-se ao seu cluster Azure HorizonDB usando 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 seguinte exemplo de código liga-se ao seu cluster Azure HorizonDB 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 seguinte exemplo de código liga-se ao seu cluster Azure HorizonDB e usa 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 seguinte exemplo de código liga-se ao seu cluster Azure HorizonDB e usa 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()