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 la ruta de retirada. Se recomienda encarecidamente actualizar al servidor flexible de Azure Database for MySQL. Para más información sobre la migración al servidor flexible de Azure Database for MySQL, consulte ¿Qué ocurre con Azure Database for MySQL con servidor único?

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:

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:

  1. 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.

  2. Abra un símbolo del sistema o un shell de bash y compruebe la versión de Python mediante la ejecución de python -V con el modificador V mayúscula.

  3. El instalador de paquetes de pip se incluye en las versiones más recientes de Python. Actualice pip a la versión más reciente mediante la ejecución de pip install -U pip.

    Si pip no está instalado, puede descargarlo e instalarlo con get-pip.py. Para más información, consulte Instalación.

  4. 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.

  1. Inicie sesión en Azure Portal.

  2. En la barra de búsqueda del portal, busque y seleccione el servidor de Azure Database for MySQL que ha creado, como mydemoserver.

    Azure Database for MySQL server name

  3. 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.

    Azure Database for MySQL server name 2

Ejecución de los ejemplos de código de Python

Para cada ejemplo de código de este artículo:

  1. Cree un nuevo archivo en un editor de texto.

  2. 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.

  3. 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.

  4. Guarde el archivo en una carpeta de proyecto con una extensión .py, como C:\pythonmysql\createtable.py o /home/username/pythonmysql/createtable.py.

  5. 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 ejemplo cd pythonmysql. Escriba el comando python createtable.py seguido del nombre de archivo, por ejemplo python, 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:

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

Pasos siguientes