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, será possível se conectar a um Servidor Flexível do Banco de Dados do Azure para PostgreSQL usando o 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ê está familiarizado com o desenvolvimento usando Python, mas começou recentemente a trabalhar com o Banco de Dados do Azure para PostgreSQL.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Um Banco de Dados do Azure para PostgreSQL – Servidor Flexível. Para criar um servidor flexível, confira Criar um Banco de Dados do Azure para PostgreSQL – 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
- Caso tenha criado um servidor flexível com acesso privado (Integração VNet) , será necessário se conectar ao servidor de um recurso na mesma VNet do servidor. Crie uma máquina virtual e adicione-a à VNET criada com o servidor flexível. Confira Criar e gerenciar a rede virtual do Banco de Dados do Azure para PostgreSQL – Servidor Flexível usando a CLI do Azure.
- Caso tenha criado um servidor flexível com acesso público (endereços IP permitidos) , será possível adicionar seu endereço IP local à lista de regras de firewall no servidor. Confira Criar e gerenciar regras de firewall do Banco de Dados do Azure para PostgreSQL – Servidor Flexível usando a CLI do Azure.
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 a Banco de Dados do Azure para PostgreSQL – Servidor Flexível requer o nome do servidor totalmente qualificado e as credenciais de logon. Você pode obter essas informações no portal do Azure.
No portal do Azure, pesquise e selecione o nome do servidor flexível.
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:
Crie um arquivo em um editor de texto.
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>
pelo nome do banco de dados referente ao Banco de Dados do Azure para PostgreSQL – Servidor Flexível. 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.
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.
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 exemplopython postgres-insert.py
.
Criar uma tabela e inserir dados
O exemplo de código a seguir conecta-se ao seu banco de dados referente ao Banco de Dados do Azure para PostgreSQL – Servidor Flexível usando a função psycopg2.connect e carrega os dados com uma instrução INSERT. A função cursor.execute executa a consulta SQL no banco de dados.
import psycopg2
# Update connection string information
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
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
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
cursor.execute("DROP TABLE IF EXISTS inventory;")
print("Finished dropping table (if existed)")
# Create a table
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table")
# Insert some data into the table
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
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
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
conn.commit()
cursor.close()
conn.close()
Quando o código é executado com êxito, ele produz a seguinte saída:
Ler dados
O exemplo de código a seguir conecta-se ao seu banco de dados referente ao Banco de Dados do Azure para PostgreSQL – Servidor Flexível e usa cursor.execute com a instrução SELECT do SQL para leitura de 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
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
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
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
cursor.execute("SELECT * FROM inventory;")
rows = cursor.fetchall()
# Print all rows
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
for row in rows:
print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))
# Cleanup
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
conn.commit()
cursor.close()
conn.close()
Atualizar dados
O exemplo de código a seguir conecta-se ao seu banco de dados referente ao Banco de Dados do Azure para PostgreSQL – Servidor Flexível e usa cursor.execute com a declaração de UPDATE do SQL para atualização de dados.
import psycopg2
# Update connection string information
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
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
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (200, "banana"))
print("Updated 1 row of data")
# Cleanup
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
conn.commit()
cursor.close()
conn.close()
Excluir dados
O exemplo de código a seguir conecta-se ao seu banco de dados referente ao Banco de Dados do Azure para PostgreSQL – Servidor Flexível e usa cursor.execute com a instrução DELETE do SQL para exclusão de um item de inventário que você inseriu anteriormente.
import psycopg2
# Update connection string information
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
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
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
cursor.execute("DELETE FROM inventory WHERE name = %s;", ("orange",))
print("Deleted 1 row of data")
# Cleanup
[!INCLUDE [applies-to-postgresql-flexible-server](../includes/applies-to-postgresql-flexible-server.md)]
conn.commit()
cursor.close()
conn.close()