Inicio rápido: Use Python para conectarse a datos y consultarlos en Azure Database for MySQL con la opción Servidor flexible.
SE APLICA A: Azure Database for MySQL: servidor flexible
En este inicio rápido, se conecta al servidor flexible 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.
En este artículo se da por hecho que está familiarizado con el desarrollo mediante Python y que nunca ha usado la instancia de Azure Database for MySQL con la opción Servidor flexible.
Requisitos previos
Una cuenta de Azure con una suscripción activa.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar. Actualmente, con una cuenta gratuita de Azure, puede probar el Servidor flexible de Azure Database for MySQL gratis durante 12 meses. Para más información, vea Prueba de Azure Database for MySQL: servidor flexible de forma gratuita.
Una instancia del servidor flexible de Azure Database for MySQL. Para crear una instancia de servidor flexible de Azure Database for MySQL, consulte Creación de una instancia de servidor flexible de Azure Database for MySQL mediante Azure Portal o Creación de una instancia de servidor flexible de Azure Database for MySQL mediante la CLI de Azure.
Preparación de la estación de trabajo de cliente
- Si creó el servidor flexible con la opción Acceso privado (integración con red la virtual) , deberá conectarse a su servidor desde un recurso de la misma red virtual que el servidor. Puede crear una máquina virtual y agregarla a la red virtual creada con el servidor flexible. Consulte Creación y administración de una red virtual de servidor flexible de Azure Database for MySQL mediante la CLI de Azure.
- Si ha creado el servidor flexible con acceso público (direcciones IP permitidas) , puede agregar la dirección IP local a la lista de reglas de firewall del servidor. Consulte Creación y administración de reglas de firewall de Azure Database for MySQL con la opción Servidor flexible mediante la CLI de Azure.
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
En este inicio rápido se usa un enfoque de consulta SQL sin procesar para conectarse a MySQL. Si usa una plataforma web, utilice el conector recomendado para ella, por ejemplo, mysqlclient para Django.
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
También puede instalar el conector de Python para MySQL en mysql.com. Para más información sobre el conector de MySQL para Python, consulte la guía del desarrollador de Python o del conector de MySQL.
Obtención de información sobre la conexión
Obtenga la información de conexión necesaria para conectarse a Azure Database for MySQL con la opción Servidor flexible 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 la instancia del servidor flexible de Azure Database for MySQL que creó, 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.
Ejemplos de código
Ejecute los siguientes 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.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
.
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 la función connect() para conectarse al servidor flexible mediante los argumentos de la colección de configuración. El código usa un cursor en la conexión, y 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>',
'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.")
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 utiliza la función connect() para conectarse al servidor flexible mediante los argumentos de la colección de configuración. El código usa un cursor en la conexión, y 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>',
'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.")
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 utiliza la función connect() para conectarse al servidor flexible mediante los argumentos de la colección de configuración. El código usa un cursor en la conexión, y 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>',
'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.")
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 utiliza la función connect() para conectarse al servidor flexible mediante los argumentos de la colección de configuración. El código usa un cursor en la conexión, y 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>',
'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.")
Pasos siguientes
- Conectividad cifrada mediante la seguridad de la capa de transporte (TLS 1.2) en el servidor flexible de Azure Database for MySQL.
- Obtenga más información sobre las redes de Azure Database for MySQL con la opción Servidor flexible.
- Creación y administración de reglas de firewall de servidor flexible de Azure Database for MySQL mediante Azure Portal.
- Creación y administración de una red virtual para un servidor flexible de Azure Database for MySQL mediante Azure Portal.