Démarrage rapide : Utiliser Python pour se connecter et interroger des données dans Azure Database pour MySQL

S’APPLIQUE À : Azure Database pour MySQL - Serveur unique

Important

Azure Database pour MySQL serveur unique se trouve sur le chemin de mise hors service. Nous vous recommandons vivement de procéder à la mise à niveau vers Azure Database pour MySQL serveur flexible. Pour plus d’informations sur la migration vers Azure Database pour MySQL serveur flexible, consultez Ce qui se passe pour Azure Database pour MySQL serveur unique ?

Dans ce guide de démarrage rapide, vous vous connectez à Azure Database pour MySQL en utilisant Python. Vous utilisez ensuite des instructions SQL pour interroger, insérer, mettre à jour et supprimer des données dans la base de données depuis des plateformes Mac, Ubuntu Linux et Windows.

Prérequis

Voici les prérequis pour ce guide de démarrage rapide :

Installer Python et le connecteur MySQL

Effectuez les étapes suivantes pour installer Python et le connecteur MySQL pour Python sur votre ordinateur :

Notes

Ce guide de démarrage rapide utilise le Guide de développement Python/Connecteur MySQL.

  1. Téléchargez et installez Python 3.7 ou ultérieur pour votre système d’exploitation. Veillez à ajouter Python à votre PATH, car le connecteur MySQL en a besoin.

  2. Ouvrez une invite de commandes ou un interpréteur de commandes bash, puis vérifiez votre version de Python en exécutant python -V avec le commutateur V majuscule.

  3. Le programme d’installation de package pip est inclus dans les dernières versions de Python. Exécutez pip install -U pip pour mettre à jour pip avec la dernière version.

    Si pip n’est pas installé, vous pouvez le télécharger et l’installer avec get-pip.py. Pour plus d’informations, consultez Installation.

  4. Utilisez pip pour installer le connecteur MySQL pour Python et ses dépendances :

    pip install mysql-connector-python
    

Obtenir des informations de connexion

Obtenez les informations dont vous avez besoin pour vous connecter à Azure Database pour MySQL dans le portail Azure. Vous devez disposer du nom du serveur, du nom de la base de données et des informations d’identification de connexion.

  1. Connectez-vous au portail Azure.

  2. Dans la barre de recherche du portail, recherchez et sélectionnez le serveur Azure Database pour MySQL que vous avez créé, par exemple mydemoserver.

    Azure Database for MySQL server name

  3. Dans la page Vue d’ensemble du serveur, notez le nom du serveur et le nom de connexion de l’administrateur du serveur. Si vous oubliez votre mot de passe, vous pouvez également le réinitialiser dans cette page.

    Azure Database for MySQL server name 2

Exécution des exemples de code Python

Pour chaque exemple de code dans cet article :

  1. Créez un fichier dans un éditeur de texte.

  2. Ajoutez l’exemple de code au fichier. Dans le code, remplacez les espaces réservés <mydemoserver>, <myadmin>, <mypassword> et <mydatabase> par les valeurs de votre serveur et de votre base de données MySQL.

  3. SSL est activé par défaut sur les serveurs Azure Database pour MySQL. Vous devrez peut-être télécharger le certificat SSL DigiCertGlobalRootG2 pour vous connecter depuis votre environnement local. Remplacez la valeur ssl_ca dans le code par le chemin d’accès à ce fichier sur votre ordinateur.

  4. Enregistrez le fichier dans un dossier de projet avec une extension .py, par exemple C:\pythonmysql\createtable.py ou /home/username/pythonmysql/createtable.py.

  5. Pour exécuter le code, ouvrez une invite de commandes ou un interpréteur de commandes bash, puis changez de répertoire dans votre dossier de projet (par exemple, cd pythonmysql). Tapez la commande python suivie du nom de fichier, par exemple python createtable.py, puis appuyez sur Entrée.

    Notes

    Sur Windows, si python.exe est introuvable, vous devrez peut-être fournir le chemin de Python à votre variable d’environnement PATH ou fournir le chemin complet à python.exe (par exemple, C:\python27\python.exe createtable.py).

Étape 1 : Créer une table et insérer des données

Utilisez le code suivant pour vous connecter au serveur et à la base de données, créer une table et charger les données à l’aide d’une instruction SQL INSERT. Le code importe la bibliothèque mysql.connector et utilise ces éléments :

  • La fonction connect() permettant de se connecter à Azure Database pour MySQL au moyen des arguments de la collection de configurations.
  • La méthode cursor.execute() exécute la requête SQL sur la base de données MySQL.
  • curseur.close() lorsque vous avez fini d’utiliser un curseur.
  • conn.close() pour fermer la connexion.
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.")

Étape 2 : Lire les données

Utilisez le code suivant pour vous connecter et lire des données à l’aide d’une instruction SQL SELECT. Le code importe la bibliothèque mysql.connector et utilise la méthode cursor.execute() pour exécuter la requête SQL sur la base de données MySQL.

Le code lit les lignes de données à l’aide de la méthode fetchall(), conserve le jeu de résultats dans une ligne de collection et utilise un itérateur for pour exécuter les lignes en boucle.

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.")

Étape 3 : Mettre à jour des données

Utilisez le code suivant pour vous connecter et mettre à jour les données à l’aide d’une instruction SQL UPDATE. Le code importe la bibliothèque mysql.connector et utilise la méthode cursor.execute() pour exécuter la requête SQL sur la base de données 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.")

Étape 4 : Suppression de données

Utilisez le code suivant pour vous connecter et supprimer des données à l’aide d’une instruction SQL DELETE. Le code importe la bibliothèque mysql.connector et utilise la méthode cursor.execute() pour exécuter la requête SQL sur la base de données 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.")  

Nettoyer les ressources

Pour nettoyer toutes les ressources utilisées dans le cadre de ce guide de démarrage rapide, supprimez le groupe de ressources à l’aide de la commande suivante :

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes

Étapes suivantes