Início Rápido: Usar Python para se 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 da desativação. É altamente recomendável que você atualize para o servidor flexível do Banco de Dados do Azure para MySQL. Para obter mais informações sobre a migração para o servidor flexível do Banco de Dados do Azure para MySQL, confira O que está acontecendo com o Servidor Único do Banco de Dados do Azure para MySQL?
Neste início rápido, você se conectará a um Banco de Dados do Azure para MySQL 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.
Pré-requisitos
Para este início rápido você precisa:
Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
Criar um servidor individual de Banco de Dados do Azure para MySQL usando o portal do Azure
ou a CLI do Azure se ainda não tiver um.Com base em se você está usando o acesso público ou privado, conclua UMA das ações abaixo para habilitar a conectividade.
Ação Método de conectividade Guia de instruções Configurar regras de firewall Público Portal
CLIConfigurar Ponto de Extremidade de Serviço Público Portal
CLIConfigurar link privado Privados Portal
CLI
Instalar o conector MySQL e Python
Instale o Python e o conector MySQL para Python em seu computador usando as seguintes etapas:
Observação
Este início rápido está usando o Guia do Desenvolvedor para Conector MySQL/Python.
Baixe e instale o Python 3.7 ou superior para o seu sistema operacional. É necessário que você adicione o Python ao seu
PATH
, pois o conector do MySQL exige isso.Abra um prompt de comando ou shell do
bash
e verifique sua versão do Python, executandopython -V
com a opção V em maiúscula.O instalador do pacote
pip
está incluído nas versões mais recentes do Python. Executandopip install -U pip
, atualize opip
para a versão mais recente.Se o
pip
não estiver instalado, você poderá baixá-lo e instalá-lo comget-pip.py
. Para obter mais informações, confira Instalação.Use o
pip
para instalar o conector do MySQL para Python e as respectivas dependências:pip install mysql-connector-python
Obter informações de conexão
Obtenha as informações de conexão das quais precisa para se conectar ao Banco de Dados do Azure para MySQL do portal do Azure. Você precisa das credenciais de logon, do nome do servidor e do nome do banco de dados.
Entre no portal do Azure.
Na barra de pesquisa do portal, procure pelo servidor de Banco de Dados do Azure para MySQL que você criou (com o nome que você deu a ele, como mydemoserver) e selecione-o.
Na página de Visão geral do servidor, anote o Nome do servidor e o Nome de logon do administrador do servidor. Se você esquecer sua senha, também poderá redefini-la dessa página.
Executando os exemplos de código do 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 os espaços reservados
<mydemoserver>
,<myadmin>
,<mypassword>
e<mydatabase>
pelos valores do servidor e do banco de dados MySQL.O SSL está habilitado por padrão nos servidores do Banco de Dados do Azure para MySQL. Talvez seja necessário baixar o certificado SSL DigiCertGlobalRootG2 para se conectar do ambiente local. Substitua o valor
ssl_ca
no código pelo caminho para esse arquivo no seu computador.Salve o arquivo em uma pasta de projeto usando a extensão de arquivo .py, como C:\pythonmysql\createtable.py ou /home/username/pythonmysql/createtable.py.
Para executar o código, abra um prompt de comando ou shell do
bash
e altere o diretório para a pasta do projeto, por exemplo,cd pythonmysql
. Digite o comandopython
seguido pelo nome do arquivo (por exemplo,python createtable.py
) e pressione Enter.Observação
No Windows, se python.exe não for encontrado, poderá ser necessário adicionar o caminho do Python à sua 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 os dados usando uma instrução SQL INSERT. O código importa a biblioteca mysql.connector e usa o método:
- connect() para se conectar ao Banco de Dados do Azure para MySQL usando os argumentos da coleção de configuração.
- cursor.execute() para executar a consulta SQL no banco de dados MySQL.
- cursor.close() quando você terminar de usar um cursor.
- conn.close() para fechar a 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.")
Etapa 2: Ler dados
Use o código a seguir para conectar-se e ler os dados usando uma instrução SQL SELECT. O código importa a biblioteca mysql.connector e usa o método cursor.execute() para executar 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 coleção e usa um iterador for
para executar um 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
Use o código a seguir para conectar-se e atualizar os dados usando uma instrução SQL UPDATE. O código importa a biblioteca mysql.connector e usa o método cursor.execute() para executar 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
Use o código a seguir para conectar-se e remover os dados usando uma instrução SQL DELETE. O código importa a biblioteca mysql.connector e usa o método cursor.execute() para executar 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.")
Limpar os recursos
Para limpar todos os recursos usados durante este guia de início rápido, exclua o grupo de recursos usando o seguinte comando:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes