Guia de início rápido: usar Python para 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 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. Em seguida, você usa instruções SQL para consultar, inserir, atualizar e excluir dados no banco de dados das plataformas Mac, Ubuntu Linux e Windows.
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 servidor flexível PostgreSQL.
Pré-requisitos
- Uma conta do Azure com uma subscrição 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 de pacote pip mais recente.
Preparando a estação de trabalho do cliente
- Se você criou sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL com acesso privado (Integração VNet), precisará se conectar ao servidor a partir de um recurso dentro da mesma VNet do servidor. Você pode criar uma máquina virtual e adicioná-la à VNet criada com sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL. Consulte Criar e gerenciar o Banco de Dados do Azure para PostgreSQL - Rede virtual de servidor flexível usando a CLI do Azure.
- Se você criou sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL com acesso público (endereços IP permitidos), poderá adicionar seu endereço IP local à lista de regras de firewall em seu servidor. Consulte Criar e gerenciar o Banco de Dados do Azure para PostgreSQL - Regras de firewall do Servidor Flexível usando a CLI do Azure.
Instalar as bibliotecas Python para PostgreSQL
O módulo psycopg2 permite conectar e consultar um banco de dados PostgreSQL, e está disponível como um pacote de roda Linux, macOS ou Windows. Instale a versão binária do módulo, incluindo todas as dependências.
Para instalar psycopg2
o , abra um terminal ou prompt de comando e execute o comando pip install psycopg2
.
Obter informações de conexão de banco de dados
A conexão a 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.
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 e o nome de usuário Admin. O nome do servidor totalmente qualificado é sempre do formato <my-server-name.postgres.database.azure.com>.
Você também precisa de sua senha de administrador. Se você esquecê-lo, você pode redefini-lo a partir da página de visão geral.
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. No código, substitua:
<server-name>
e<admin-username>
com os valores copiados do portal do Azure.<admin-password>
com a palavra-passe do servidor.<database-name>
com o nome do seu Banco de Dados do Azure para banco de dados de servidor flexível PostgreSQL. Um banco de dados padrão chamado postgres foi criado automaticamente quando você criou seu servidor. Você pode renomear esse banco de dados ou criar um novo banco de dados usando comandos SQL.
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.
Para executar o arquivo, altere para a pasta do projeto em uma 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 se conecta ao seu banco de dados de 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:
Ler dados
O exemplo de código a seguir se conecta ao seu banco de dados de servidor flexível do Banco de Dados do Azure para PostgreSQL e usa 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 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 seu Banco de Dados do Azure para banco de dados de servidor flexível 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()
Eliminar dados
O exemplo de código a seguir se conecta ao banco de dados flexível do servidor 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()