Início Rápido: Usar o Python para se conectar e consultar dados no Banco de Dados do Azure para PostgreSQL – Servidor Flexível

APLICA-SE A: Banco de Dados do Azure para PostgreSQL – Servidor Flexível

Neste guia de início rápido, você se conecta a uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL usando Python. Você usará instruções SQL para consultar, inserir, atualizar e excluir dados no banco de dados de plataformas Windows, Ubuntu Linux e Mac.

Este artigo pressupõe que você esteja familiarizado com o desenvolvimento usando Python, mas você é novo em trabalhar com o Banco de Dados do Azure para servidor flexível PostgreSQL.

Pré-requisitos

  • Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
  • Uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL. Para criar o Banco de Dados do Azure para instância de servidor flexível do PostgreSQL, consulte Criar um Banco de Dados do Azure para PostgreSQL - instância do Servidor Flexível usando o portal do Azure.
  • Python 2.7 ou 3.6+.
  • Instalador do pacote pip mais recente.

Como preparar sua estação de trabalho cliente

Instalar as bibliotecas do Python para PostgreSQL

O módulo psycopg2 permite estabelecer conexão e consultar um banco de dados PostgreSQL e está disponível como um pacote indicador do Linux, macOS ou Windows. Instale a versão binária do módulo, incluindo todas as dependências.

Para instalar psycopg2, abra um terminal ou um prompt de comando e execute o comando pip install psycopg2.

Obter informações da conexão de banco de dados

A conexão com uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL requer o nome do servidor totalmente qualificado e as credenciais de logon. Você pode obter essas informações no portal do Azure.

  1. No portal do Azure, procure e selecione seu Banco de Dados do Azure para nome de servidor flexível PostgreSQL.

  2. Na página Visão Geral do servidor, copie o Nome do servidor totalmente qualificado e o Nome de usuário do administrador. O Nome do servidor totalmente qualificado está sempre no formato <my-server-name>.postgres.database.azure.com.

    Você também precisa da sua senha de administrador. Se você se esquecer dele, poderá redefini-lo na página de visão geral.

Como executar os exemplos de Python

Para cada exemplo de código neste artigo:

  1. Crie um arquivo em um editor de texto.

  2. Adicione o exemplo de código ao arquivo. No código, substitua:

    • <server-name> e <admin-username> pelos valores copiados do portal do Azure.
    • <admin-password> pela sua senha de servidor.
    • <database-name> com o nome do banco de dados do servidor flexível do Banco de Dados do Azure para PostgreSQL. Um banco de dados padrão chamado postgres foi criado automaticamente quando você criou seu servidor. É possível renomear esse banco de dados ou criar outro usando os comandos SQL.
  3. Salve o arquivo na pasta do seu projeto com uma extensão .py, como postgres-insert.py. Para Windows, verifique se a codificação UTF-8 está selecionada quando você salvar o arquivo.

  4. Para executar o arquivo, altere a pasta do projeto em um interface de linha de comando e digite python seguido pelo nome do arquivo, por exemplo python postgres-insert.py.

Criar uma tabela e inserir dados

O exemplo de código a seguir se conecta ao banco de dados do servidor flexível do Banco de Dados do Azure para PostgreSQL usando a função psycopg2.connect e carrega dados com uma instrução SQL INSERT . A função cursor.execute executa a consulta SQL no banco de dados.

import psycopg2

# Update connection string information 
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"

# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.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:

Command-line output

Ler dados

O exemplo de código a seguir se conecta ao banco de dados do servidor flexível do Banco de Dados do Azure para PostgreSQL e usa cursor.execute com a instrução SQL SELECT para ler dados. Essa função aceita uma consulta e retorna um conjunto de resultados a ser iterado usando cursor.fetchall()

import psycopg2

# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"

# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.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()

Atualizar dados

O exemplo de código a seguir se conecta ao banco de dados do servidor flexível do Banco de Dados do Azure para PostgreSQL e usa cursor.execute com a instrução SQL UPDATE para atualizar dados.

import psycopg2

# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"

# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.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()

Excluir os dados

O exemplo de código a seguir se conecta ao banco de dados do servidor flexível do Banco de Dados do Azure para PostgreSQL e usa cursor.execute com a instrução SQL DELETE para excluir um item de inventário que você inseriu anteriormente.

import psycopg2

# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"

# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.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()

Próximas etapas