Inicio rápido: Uso de Python para conectarse y consultar datos en Azure Database for MySQL
SE APLICA A: Azure Database for MySQL: Servidor único
Importante
El servidor único de Azure Database for MySQL está en proceso de retirada. Es muy recomendable actualizar al servidor flexible de Azure Database for MySQL. Para obtener más información sobre la migración al servidor flexible de Azure Database for MySQL, consulte ¿Qué sucede con el servidor único de Azure Database for MySQL?
En este inicio rápido, va a conectar a una instancia de Azure Database for MySQL mediante Python. Puede usar instrucciones SQL para consultar, insertar, actualizar y eliminar datos de la base de datos en las plataformas Mac, Ubuntu Linux y Windows.
Requisitos previos
Para esta guía de inicio rápido, necesitará lo siguiente:
Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
Inicio rápido: Creación de un servidor único de Azure Database for MySQL mediante Azure Portal.
o la CLI de Azure si no tiene uno.En función de si usa el acceso público o privado, complete UNA de las acciones siguientes para habilitar la conectividad.
Acción Método de conectividad Guía paso a paso Configurar reglas de firewall Público Portal
CLIConfigurar el punto de conexión de servicio Público Portal
CLIConfiguración del vínculo privado Private Portal
CLICreación de una base de datos y un usuario que no sea administrador
Instalación de Python y el conector de MySQL
Instale Python y el conector de MySQL para Python en su propio equipo de la forma siguiente:
Nota
Este inicio rápido usa la guía del desarrollador de Python o conector de MySQL.
Descargue e instale Python 3.7 o superior para su sistema operativo. Asegúrese de agregar Python a
PATH
, porque el conector de MySQL lo requiere.Abra un símbolo del sistema o un shell de
bash
y compruebe la versión de Python mediante la ejecución depython -V
con el modificador V mayúscula.El instalador de paquetes de
pip
se incluye en las versiones más recientes de Python. Actualicepip
a la versión más reciente mediante la ejecución depip install -U pip
.Si
pip
no está instalado, puede descargarlo e instalarlo conget-pip.py
. Para más información, consulte Instalación.Utilice
pip
para instalar el conector de MySQL para Python y sus dependencias:pip install mysql-connector-python
Obtención de información sobre la conexión
Obtenga la información de conexión necesaria para conectarse a Azure Database for MySQL en Azure Portal. Necesitará el nombre del servidor, el nombre de la base de datos y las credenciales de inicio de sesión.
Inicie sesión en Azure Portal.
En la barra de búsqueda del portal, busque y seleccione el servidor de Azure Database for MySQL que ha creado, como mydemoserver.
En la página Información general del servidor, anote el nombre del servidor y el nombre de inicio de sesión del administrador del servidor. Si olvida la contraseña, puede restablecerla también en esta página.
Ejecución de los ejemplos de código de Python
Para cada ejemplo de código de este artículo:
Cree un nuevo archivo en un editor de texto.
Agregue el ejemplo de código al archivo. En el código, reemplace los marcadores de posición
<mydemoserver>
,<myadmin>
,<mypassword>
y<mydatabase>
por los valores de la base de datos y el servidor de MySQL.SSL está habilitada de manera predeterminada en servidores de Azure Database for MySQL. Es posible que tenga que descargar el certificado de SSL DigiCertGlobalRootG2 para conectarse desde el entorno local. Reemplace el valor
ssl_ca
del código por la ruta de acceso a este archivo en el equipo.Guarde el archivo en una carpeta de proyecto con una extensión .py, como C:\pythonmysql\createtable.py o /home/username/pythonmysql/createtable.py.
Para ejecutar el código, abra un símbolo del sistema o el shell de
bash
y luego cambie el directorio a la carpeta del proyecto, por ejemplocd pythonmysql
. Escriba el comandopython createtable.py
seguido del nombre de archivo, por ejemplopython
, y presione Entrar.Nota
En Windows, si no se encuentra python.exe, puede que tenga que agregar la ruta de acceso de Python a la variable de entorno PATH o proporcione la ruta de acceso completa a python.exe, por ejemplo
C:\python27\python.exe createtable.py
.
Paso 1: Crear una tabla e insertar datos
Use el código siguiente para conectarse al servidor y a la base de datos, crear una tabla y cargar los datos mediante una instrucción SQL INSERT. El código importa la biblioteca mysql.connector y utiliza el método:
- Función connect() para conectarse a Azure Database for MySQL mediante los argumentos de la colección de configuración.
- El método cursor.execute() ejecuta la consulta SQL en la base de datos MySQL.
- cursor.close() cuando haya terminado de usar un cursor.
- conn.close() para cerrar la conexión.
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.")
Paso 2: Lectura de datos
Use el código siguiente para conectarse y leer los datos mediante la instrucción SQL SELECT. El código importa la biblioteca mysql.connector y usa el método cursor.execute() ejecuta la consulta SQL en la base de datos MySQL.
El código lee las filas de datos con el método fetchall(), mantiene el conjunto de resultados en una fila de colección y usa un iterador for
para recorrer las filas.
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.")
Paso 3: Actualización de datos
Use el código siguiente para conectarse y actualizar los datos mediante la instrucción SQL UPDATE. El código importa la biblioteca mysql.connector y usa el método cursor.execute() ejecuta la consulta SQL en la base de datos 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.")
Paso 4: Eliminación de datos
Use el código siguiente para conectarse y eliminar datos mediante la instrucción SQL DELETE. El código importa la biblioteca mysql.connector y usa el método cursor.execute() ejecuta la consulta SQL en la base de datos 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.")
Limpieza de recursos
Para limpiar todos los recursos utilizados durante esta guía de inicio rápido, elimine el grupo de recursos con el siguiente comando:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes