Database di Azure per MySQL: usare Python per connettersi ed eseguire query sui dati

Questa guida introduttiva illustra come usare Python per connettersi a un database di Azure per MySQL. Usa istruzioni SQL per eseguire query, inserire, aggiornare ed eliminare dati nel database dalle piattaforme Mac OS, Ubuntu Linux e Windows. Le procedure descritte in questo articolo presuppongono che si abbia familiarità con lo sviluppo con Python, ma non con Database di Azure per MySQL.

Prerequisiti

Questa guida introduttiva usa le risorse create in una delle guide seguenti come punto di partenza:

Installare Python e il connettore MySQL

Installare Python e il connettore MySQL per Python nel computer. A seconda della piattaforma, seguire questa procedura:

Windows

  1. Scaricare e installare Python 2.7 da python.org.
  2. Verificare l'installazione di Python avviando il prompt dei comandi. Eseguire il comando C:\python27\python.exe -V usando l'opzione della V maiuscola per visualizzare il numero di versione.
  3. Installare il connettore Python per MySQL corrispondente alla versione di Python da mysql.com.

Linux (Ubuntu)

  1. In Linux (Ubuntu), Python viene in genere installato nell'ambito dell'installazione predefinita.
  2. Verificare l'installazione di Python avviando la shell Bash. Eseguire il comando python -V usando l'opzione della V maiuscola per visualizzare il numero di versione.
  3. Verificare l'installazione di PIP eseguendo il comando pip show pip -V per visualizzare il numero di versione.
  4. PIP può essere incluso in alcune versioni di Python. Se PIP non è installato, è possibile installare il pacchetto PIP tramite il comando sudo apt-get install python-pip.
  5. Aggiornare PIP alla versione più recente eseguendo il comando pip install -U pip.
  6. Installare il connettore di MySQL per Python e le relative dipendenze usando il comando PIP:

    sudo pip install mysql-connector-python-rf
    

MacOS

  1. In Mac OS, Python viene in genere installato nell'ambito dell'installazione del sistema operativo predefinita.
  2. Verificare l'installazione di Python avviando la shell Bash. Eseguire il comando python -V usando l'opzione della V maiuscola per visualizzare il numero di versione.
  3. Verificare l'installazione di PIP eseguendo il comando pip show pip -V per visualizzare il numero di versione.
  4. PIP può essere incluso in alcune versioni di Python. Se PIP non è installato, è possibile installare il pacchetto PIP.
  5. Aggiornare PIP alla versione più recente eseguendo il comando pip install -U pip.
  6. Installare il connettore di MySQL per Python e le relative dipendenze usando il comando PIP:

    pip install mysql-connector-python-rf
    

Ottenere informazioni di connessione

Ottenere le informazioni di connessione necessarie per connettersi al database di Azure per MySQL. Sono necessari il nome del server completo e le credenziali di accesso.

  1. Accedere al Portale di Azure.
  2. Nel menu a sinistra nel portale di Azure fare clic su Tutte le risorse e cercare il server creato, ad esempio myserver4demo.
  3. Fare clic sul nome server myserver4demo.
  4. Selezionare la pagina Proprietà del server. Annotare il Nome server e il nome di accesso dell'amministratore del server. Database di Azure per MySQL - Accesso dell'amministratore del server
  5. Se si dimenticano le informazioni di accesso per il server, passare alla pagina Panoramica per visualizzare il nome di accesso dell'amministratore del server e, se necessario, reimpostare la password.

Eseguire il codice Python

  • Incollare il codice in un file di testo e salvarlo in una cartella di progetto con estensione py, ad esempio C:\pythonmysql\createtable.py or /home/username/pythonmysql/createtable.py
  • Per eseguire il codice, avviare il prompt dei comandi o la shell Bash. Passare alla cartella del progetto cd pythonmysql. Per eseguire l'applicazione, digitare quindi il comando python seguito dal nome del file python createtable.py. Nel sistema operativo Windows, se python.exe non viene trovato si può specificare il percorso completo del file eseguibile oppure aggiungere il percorso di Python nella variabile di ambiente PATH. C:\python27\python.exe createtable.py

Connettersi, creare tabelle e inserire dati

Usare il codice seguente per connettersi al server, creare una tabella e caricare i dati usando un'istruzione SQL INSERT.

Nel codice viene importata la libreria mysql.connector. La funzione connect() viene usata per connettersi a Database di Azure per MySQL usando gli argomenti di connessione presenti nella raccolta di configurazione. Il codice usa un cursore per la connessione, mentre il metodo cursor.execute() esegue la query SQL sul database MySQL.

Sostituire i parametri host, user, password e database con i valori specificati al momento della creazione del server e del database.

import mysql.connector
from mysql.connector import errorcode

# Obtain connection string information from the portal
config = {
  'host':'myserver4demo.mysql.database.azure.com',
  'user':'myadmin@myserver4demo',
  'password':'yourpassword',
  'database':'quickstartdb'
}

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

Leggere i dati

Usare il codice seguente per connettersi e leggere i dati usando un'istruzione SQL SELECT.

Nel codice viene importata la libreria mysql.connector. La funzione connect() viene usata per connettersi a Database di Azure per MySQL usando gli argomenti di connessione presenti nella raccolta di configurazione. Il codice usa un cursore per la connessione, mentre il metodo cursor.execute() esegue l'istruzione SQL sul database MySQL. Le righe di dati vengono lette usando il metodo fetchall(). Il set di risultati viene conservato in una riga della raccolta e viene usata un'istruzione di iterazione for per eseguire il ciclo sulle righe.

Sostituire i parametri host, user, password e database con i valori specificati al momento della creazione del server e del database.

import mysql.connector
from mysql.connector import errorcode

# Obtain connection string information from the portal
config = {
  'host':'myserver4demo.mysql.database.azure.com',
  'user':'myadmin@myserver4demo',
  'password':'yourpassword',
  'database':'quickstartdb'
}

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

Aggiornare i dati

Usare il codice seguente per connettersi e aggiornare i dati usando un'istruzione SQL UPDATE.

Nel codice viene importata la libreria mysql.connector. La funzione connect() viene usata per connettersi a Database di Azure per MySQL usando gli argomenti di connessione presenti nella raccolta di configurazione. Il codice usa un cursore per la connessione, mentre il metodo cursor.execute() esegue l'istruzione SQL sul database MySQL.

Sostituire i parametri host, user, password e database con i valori specificati al momento della creazione del server e del database.

import mysql.connector
from mysql.connector import errorcode

# Obtain connection string information from the portal
config = {
  'host':'myserver4demo.mysql.database.azure.com',
  'user':'myadmin@myserver4demo',
  'password':'yourpassword',
  'database':'quickstartdb'
}

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

Eliminare i dati

Usare il codice seguente per connettersi e rimuovere i dati usando un'istruzione SQL DELETE.

Nel codice viene importata la libreria mysql.connector. La funzione connect() viene usata per connettersi a Database di Azure per MySQL usando gli argomenti di connessione presenti nella raccolta di configurazione. Il codice usa un cursore per la connessione, mentre il metodo cursor.execute() esegue la query SQL sul database MySQL.

Sostituire i parametri host, user, password e database con i valori specificati al momento della creazione del server e del database.

import mysql.connector
from mysql.connector import errorcode

# Obtain connection string information from the portal
config = {
  'host':'myserver4demo.mysql.database.azure.com',
  'user':'myadmin@myserver4demo',
  'password':'yourpassword',
  'database':'quickstartdb'
}

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

Passaggi successivi