Guia de início rápido: usar Python para conectar e consultar dados no Banco de Dados do Azure para MySQL - Servidor flexível
Neste início rápido, você se conecta ao Banco de Dados do Azure para Servidor Flexível 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.
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 o Servidor Flexível MySQL.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa.
Se você não tiver 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 - Servidor Flexível gratuitamente por 12 meses. Para obter mais informações, consulte Usar uma conta gratuita do Azure para experimentar o Banco de Dados do Azure para MySQL - Servidor Flexível gratuitamente.
- Um Banco de Dados do Azure para instância do Servidor Flexível MySQL. Para criar uma instância do Banco de Dados do Azure para o Servidor Flexível MySQL, consulte Guia de início rápido: Criar uma instância do Banco de Dados do Azure para MySQL com o portal do Azure ou Guia de início rápido: crie uma instância do Banco de Dados do Azure para MySQL - Servidor Flexível usando a CLI do Azure.
Prepare a estação de trabalho do cliente
- Se você criou seu servidor flexível com acesso privado (integração de rede virtual), precisará se conectar ao servidor a partir de um recurso dentro da mesma rede virtual que o servidor. Você pode criar uma máquina virtual e adicioná-la à VNet criada com seu 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.
- Se criou o seu servidor flexível com acesso público (endereços IP permitidos), pode adicionar o seu endereço IP local à lista de regras de firewall no seu servidor. Consulte Gerenciar regras de firewall para o Banco de Dados do Azure para MySQL - Servidor flexível usando a CLI do Azure.
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 usa uma abordagem de consulta SQL bruta para se conectar ao MySQL. Se você estiver usando um framework web, use o conector recomendado para o framework, por exemplo, mysqlclient for Django.
Baixe e instale o Python 3.7 ou superior para o 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
Você também pode instalar o conector Python para MySQL a partir do mysql.com. Para obter mais informações sobre o MySQL Connector for Python, consulte o MySQL Connector/Python Developer Guide.
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 Servidor Flexível MySQL no portal do Azure. Você precisa do nome do servidor, do nome do banco de dados e das credenciais de entrada.
Inicie sessão no portal do Azure.
Na barra de pesquisa do portal, procure e selecione a instância do Banco de Dados do Azure para o Servidor Flexível 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.
Amostras de código
Execute os exemplos de código Python mencionados abaixo
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.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
.
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 a função connect() para se conectar ao servidor flexível usando os argumentos na coleção config. 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
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 a função connect() para se conectar ao servidor flexível usando os argumentos na coleção config. 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 coleta e usa um for
iterador para fazer loop sobre as 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
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 a função connect() para se conectar ao servidor flexível usando os argumentos na coleção config. 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.")
Eliminar 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 a função connect() para se conectar ao servidor flexível usando os argumentos na coleção config. 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údos relacionados
- Ligar à Base de Dados do Azure para MySQL – Servidor Flexível com ligações encriptadas
- 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
- Criar e gerenciar redes virtuais para o Banco de Dados do Azure para MySQL - Servidor flexível usando o portal do Azure