Guia de início rápido: usar Python para conectar e consultar dados no Banco de Dados do Azure para MySQL
APLICA-SE A: Banco de Dados do Azure para MySQL - Servidor Único
Importante
O servidor único do Banco de Dados do Azure para MySQL está no caminho de desativação. É altamente recomendável que você atualize para o Banco de Dados do Azure para o servidor flexível MySQL. Para obter mais informações sobre como migrar para o Banco de Dados do Azure para servidor flexível MySQL, consulte O que está acontecendo com o Banco de Dados do Azure para Servidor Único MySQL?
Neste início rápido, você se conecta a um Banco de Dados do Azure para MySQL 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.
Pré-requisitos
Para este guia de início rápido, você precisa:
Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
Criar um Banco de Dados do Azure para servidor único MySQL usando o portal do Azure
ou CLI do Azure, se você não tiver uma.Com base no fato de você estar usando o acesso público ou privado, conclua UMA das ações abaixo para habilitar a conectividade.
Ação Método de conectividade Manual de instruções Configurar as regras de firewall Pública Portal
CLIConfigurar o ponto de extremidade do serviço Pública Portal
CLIConfigurar link privado Privado Portal
CLI
Instalar o Python e o conector de MySQL
Instale o Python e o conector MySQL para Python no seu computador usando as seguintes etapas:
Nota
Este guia de início rápido está usando o MySQL Connector/Python Developer Guide.
Baixe e instale o Python 3.7 ou superior para seu sistema operacional. Certifique-se de adicionar Python ao seu
PATH
, porque o conector MySQL requer isso.Abra um prompt de comando ou
bash
shell e verifique sua versão do Python executandopython -V
com a opção V maiúscula.O
pip
instalador do pacote está incluído nas versões mais recentes do Python. Atualizepip
para a versão mais recente executandopip install -U pip
o .Se
pip
não estiver instalado, pode transferi-lo e instalá-lo comget-pip.py
o . Para obter mais informações, consulte Instalação.Use
pip
para instalar o conector MySQL para Python e suas dependências:pip install mysql-connector-python
Obter informações da ligação
Obtenha as informações de conexão necessárias para se conectar ao Banco de Dados do Azure para MySQL no portal do Azure. Você precisa do nome do servidor, nome do banco de dados e credenciais de login.
Inicie sessão no portal do Azure.
Na barra de pesquisa do portal, procure e selecione o Banco de Dados do Azure para o servidor MySQL que você criou, como mydemoserver.
Na página Visão geral do servidor, anote o Nome do servidor e o Nome de login do administrador do servidor. Se se esquecer da sua palavra-passe, também pode repor a palavra-passe a partir desta página.
Executando os exemplos de código 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 os
<mydemoserver>
espaços reservados , , ,<myadmin>
<mypassword>
e<mydatabase>
pelos valores para seu servidor e banco de dados MySQL.O SSL está habilitado por padrão no Banco de Dados do Azure para servidores MySQL. Talvez seja necessário baixar o certificado SSL DigiCertGlobalRootG2 para se conectar a partir do seu ambiente local. Substitua o
ssl_ca
valor no código pelo caminho para este arquivo no seu computador.Salve o arquivo em uma pasta de projeto com uma extensão .py, como C:\pythonmysql\createtable.py ou /home/username/pythonmysql/createtable.py.
Para executar o código, abra um prompt de comando ou
bash
shell e altere o diretório para a pasta do projeto, por exemplocd pythonmysql
. Digite opython
comando seguido do nome do arquivo, por exemplopython createtable.py
, e pressione Enter.Nota
No Windows, se python.exe não for encontrado, talvez seja necessário adicionar o caminho Python à variável de ambiente PATH ou fornecer o caminho completo para python.exe, por exemplo
C:\python27\python.exe createtable.py
.
Etapa 1: Criar uma tabela e inserir dados
Use o código a seguir para se conectar ao servidor e ao banco de dados, criar uma tabela e carregar dados usando uma instrução INSERT SQL. O código importa a biblioteca mysql.connector e usa o método:
- connect() função para se conectar ao Banco de Dados do Azure para MySQL usando os argumentos na coleção config.
- O método cursor.execute() executa a consulta SQL no banco de dados MySQL.
- cursor.close() quando terminar de usar um cursor.
- conn.close() para fechar a conexão da conexão.
import mysql.connector
from mysql.connector import errorcode
# Obtain connection string information from the portal
config = {
'host':'<mydemoserver>.mysql.database.azure.com',
'user':'<myadmin>@<mydemoserver>',
'password':'<mypassword>',
'database':'<mydatabase>',
'client_flags': [mysql.connector.ClientFlag.SSL],
'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}
# Construct connection string
try:
conn = mysql.connector.connect(**config)
print("Connection established")
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with the user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
else:
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 table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table.")
# Insert some data into table
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
print("Inserted",cursor.rowcount,"row(s) of data.")
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("orange", 154))
print("Inserted",cursor.rowcount,"row(s) of data.")
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("apple", 100))
print("Inserted",cursor.rowcount,"row(s) of data.")
# Cleanup
conn.commit()
cursor.close()
conn.close()
print("Done.")
Passo 2: Ler dados
Utilize o código seguinte para se ligar e ler dados com uma instrução SQL SELECT. O código importa a biblioteca mysql.connector e usa o método cursor.execute() que executa a consulta SQL no banco de dados MySQL.
O código lê as linhas de dados usando o método fetchall(), mantém o conjunto de resultados em uma linha de coleta e usa um for
iterador para fazer loop nas linhas.
import mysql.connector
from mysql.connector import errorcode
# Obtain connection string information from the portal
config = {
'host':'<mydemoserver>.mysql.database.azure.com',
'user':'<myadmin>@<mydemoserver>',
'password':'<mypassword>',
'database':'<mydatabase>',
'client_flags': [mysql.connector.ClientFlag.SSL],
'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}
# Construct connection string
try:
conn = mysql.connector.connect(**config)
print("Connection established")
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with the user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
else:
cursor = conn.cursor()
# Read data
cursor.execute("SELECT * FROM inventory;")
rows = cursor.fetchall()
print("Read",cursor.rowcount,"row(s) of data.")
# 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()
print("Done.")
Etapa 3: Atualizar dados
Utilize o código seguinte para se ligar e atualizar os dados com uma instrução SQL UPDATE. O código importa a biblioteca mysql.connector e usa o método cursor.execute() que executa a consulta SQL no banco de dados MySQL.
import mysql.connector
from mysql.connector import errorcode
# Obtain connection string information from the portal
config = {
'host':'<mydemoserver>.mysql.database.azure.com',
'user':'<myadmin>@<mydemoserver>',
'password':'<mypassword>',
'database':'<mydatabase>',
'client_flags': [mysql.connector.ClientFlag.SSL],
'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}
# Construct connection string
try:
conn = mysql.connector.connect(**config)
print("Connection established")
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with the user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
else:
cursor = conn.cursor()
# Update a data row in the table
cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (300, "apple"))
print("Updated",cursor.rowcount,"row(s) of data.")
# Cleanup
conn.commit()
cursor.close()
conn.close()
print("Done.")
Etapa 4: Excluir dados
Utilize o código seguinte para se ligar e remover os dados com uma instrução SQL DELETE. O código importa a biblioteca mysql.connector e usa o método cursor.execute() que executa a consulta SQL no banco de dados MySQL.
import mysql.connector
from mysql.connector import errorcode
# Obtain connection string information from the portal
config = {
'host':'<mydemoserver>.mysql.database.azure.com',
'user':'<myadmin>@<mydemoserver>',
'password':'<mypassword>',
'database':'<mydatabase>',
'client_flags': [mysql.connector.ClientFlag.SSL],
'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}
# Construct connection string
try:
conn = mysql.connector.connect(**config)
print("Connection established")
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with the user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
else:
cursor = conn.cursor()
# Delete a data row in the table
cursor.execute("DELETE FROM inventory WHERE name=%(param1)s;", {'param1':"orange"})
print("Deleted",cursor.rowcount,"row(s) of data.")
# Cleanup
conn.commit()
cursor.close()
conn.close()
print("Done.")
Clean up resources (Limpar recursos)
Para limpar todos os recursos usados durante este início rápido, exclua o grupo de recursos usando o seguinte comando:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes