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

S’APPLIQUE À : Azure Database pour MySQL – Serveur flexible

Dans ce guide de démarrage rapide, vous vous connectez au serveur flexible Azure Database pour MySQL à l’aide de 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.

Cet article part du principe que vous connaissez les bases du développement avec Python, mais que vous ne savez pas utiliser Azure Database pour MySQL - Serveur flexible.

Prérequis

Préparation de votre station de travail cliente

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 une approche de requêtes SQL brutes pour se connecter à MySQL. Si vous utilisez un framework web, utilisez le connecteur recommandé pour le framework, par exemple mysqlclient pour Django.

  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
    

    Vous pouvez également installer le connecteur Python pour MySQL à partir de mysql.com. Pour plus d’informations sur le connecteur MySQL pour Python, consultez le guide de développement pour MySQL Connector/Python.

Obtenir des informations de connexion

Obtenez les informations dont vous avez besoin pour vous connecter au serveur flexible 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 l’instance de serveur flexible Azure Database pour MySQL que vous avez créée, par exemple mydemoserver.

  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.

Exemples de code

Exécuter les exemples de code Python mentionnés ci-dessous

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. Enregistrez le fichier dans un dossier de projet avec une extension .py, par exemple C:\pythonmysql\createtable.py ou /home/username/pythonmysql/createtable.py.

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

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 la fonction connect() pour se connecter au serveur flexible à l’aide des arguments dans la collection de configurations. Le code utilise un curseur sur la connexion, et la méthode cursor.execute() exécute 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>',
  '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.")

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 fonction connect() pour se connecter au serveur flexible à l’aide des arguments dans la collection de configurations. Le code utilise un curseur sur la connexion, et la méthode cursor.execute() exécute 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>',
  '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.")

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 fonction connect() pour se connecter au serveur flexible à l’aide des arguments dans la collection de configurations. Le code utilise un curseur sur la connexion, et la méthode cursor.execute() exécute 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>',
  '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.")

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 fonction connect() pour se connecter au serveur flexible à l’aide des arguments dans la collection de configurations. Le code utilise un curseur sur la connexion, et la méthode cursor.execute() exécute 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>',
  '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.")

Étapes suivantes