Início Rápido: Usar o Python para se conectar ao Banco de Dados do Azure para MySQL – Servidor Flexível e consultar dados dele
Nesse início rápido, você se conecta ao servidor flexível do Banco de Dados do Azure para MySQL 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ê está familiarizado com um desenvolvimento que usa o Python, mas não tem experiência em trabalhar com um Servidor Flexível do Banco de Dados do Azure para MySQL.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa.
Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar. Atualmente, com uma conta gratuita do Azure, você pode experimentar o Banco de Dados do Azure para MySQL com Servidor Flexível gratuitamente por 12 meses. Para mais informações, consulte Usar uma conta gratuita do Azure para experimentar o Banco de Dados do Azure para MySQL – servidor flexível gratuito.
- Uma instância do Servidor Flexível do Banco de Dados do Azure para MySQL. Para criar uma instância de servidor flexível do Banco de Dados do Azure para MySQL, consulte Início Rápido: criar uma instância do Banco de Dados do Azure para MySQL com o portal do Azure ou Início Rápido: criar uma instância de Banco de Dados do Azure para MySQL - Servidor Flexível usando a CLI do Azure.
Preparar a estação de trabalho do 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. Consulte Criar e gerenciar redes virtuais para o Banco de Dados do Azure para MySQL - 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. Consulte Gerenciar regras de firewall do Banco de Dados do Azure para MySQL - Servidor Flexível usando a CLI do Azure.
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 usa uma abordagem de consulta SQL bruta para se conectar ao MySQL. Se você estiver usando uma estrutura da Web, use o conector recomendado para essas estruturas, por exemplo, mysqlclient para o Django.
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
Você também pode instalar o conector do Python para MySQL de mysql.com. Para obter mais informações sobre o conector do MySQL para Python, confira o Guia do desenvolvedor do conector do MySQL/Python.
Obter informações de conexão
Obtenha as informações de conexão necessárias para se conectar ao Servidor Flexível do Banco de Dados do Azure para MySQL no portal do Azure. Será necessário obter o nome do servidor, o nome do banco de dados e as credenciais de entrada.
Entre no portal do Azure.
Na barra de pesquisa do portal, procure e selecione a instância de servidor flexível do Banco de Dados do Azure para MySQL que você criou, como mydemoserver.
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.
Exemplos de código
Execute os exemplos de código Python mencionados abaixo
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.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
.
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 SQL INSERT.
O código importará a biblioteca mysql.connector e usará a função connect() para se conectar ao servidor flexível usando argumentos da coleção de configuração. O código usa um cursor na conexão e o método cursor.execute() 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>',
'password':'<mypassword>',
'database':'<mydatabase>'
}
# 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.")
Ler dados
Use o código a seguir para conectar-se e ler os dados usando uma instrução SQL SELECT.
O código importará a biblioteca mysql.connector e usará a função connect() para se conectar ao servidor flexível usando argumentos da coleção de configuração. O código usa um cursor na conexão e o método cursor.execute() 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 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>',
'password':'<mypassword>',
'database':'<mydatabase>'
}
# 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.")
Atualizar dados
Use o código a seguir para conectar-se e atualizar os dados usando uma instrução SQL UPDATE.
O código importará a biblioteca mysql.connector e usará a função connect() para se conectar ao servidor flexível usando argumentos da coleção de configuração. O código usa um cursor na conexão e o método cursor.execute() 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>',
'password':'<mypassword>',
'database':'<mydatabase>'
}
# 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;", (200, "banana"))
print("Updated",cursor.rowcount,"row(s) of data.")
# Cleanup
conn.commit()
cursor.close()
conn.close()
print("Done.")
Excluir dados
Use o código a seguir para conectar-se e remover os dados usando uma instrução SQL DELETE.
O código importará a biblioteca mysql.connector e usará a função connect() para se conectar ao servidor flexível usando argumentos da coleção de configuração. O código usa um cursor na conexão e o método cursor.execute() 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>',
'password':'<mypassword>',
'database':'<mydatabase>'
}
# 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.")
Conteúdo relacionado
- Conectar-se ao Banco de Dados do Azure para MySQL – Servidor Flexível com conexões criptografadas
- Conceitos de conectividade e rede para o Banco de Dados do Azure para MySQL – Servidor Flexível
- Gerenciar regras de firewall para o Banco de Dados do Azure para MySQL – Servidor Flexível usando o portal do Azure
- Crie e gerencie redes virtuais para o Banco de Dados do Azure para MySQL - Servidor Flexível usando o portal do Azure