Avvio rapido: Usare Python per connettersi ai dati ed eseguire query in Database di Azure per MySQL

SI APPLICA A: Database di Azure per MySQL - Server singolo

Importante

Il server singolo del Database di Azure per MySQL è in fase di ritiro. È consigliabile eseguire l'aggiornamento al server flessibile del Database di Azure per MySQL. Per altre informazioni sulla migrazione a un server flessibile del Database di Azure per MySQL, vedere Che cosa sta succedendo al server singolo del Database di Azure per MySQL?

In questo argomento di avvio rapido ci si connette a un'istanza di Database di Azure per MySQL usando Python. È quindi possibile usare istruzioni SQL per eseguire query, inserire, aggiornare ed eliminare dati nel database dalle piattaforme Mac, Ubuntu Linux e Windows.

Prerequisiti

Per questa guida di avvio rapido, è necessario:

Installare Python e il connettore MySQL

Installare Python e il connettore MySQL per Python nel computer seguendo questa procedura:

Nota

Questo argomento di avvio rapido usa la Guida dello sviluppatore per il connettore MySQL/Python.

  1. Scaricare e installare Python 3.7 o versione successiva per il sistema operativo in uso. Assicurarsi di aggiungere Python a PATH, perché è un requisito del connettore MySQL.

  2. Aprire un prompt dei comandi o una shell bash e controllare la versione di Python eseguendo python -V con l'opzione V in maiuscolo.

  3. Il programma di installazione del pacchetto pip è incluso nelle ultime versioni di Python. Aggiornare pip alla versione più recente eseguendopip install -U pip.

    Se pip non è installato, è possibile scaricarlo e installarlo con get-pip.py. Per altre informazioni, vedere Installazione.

  4. Usare pip per installare il connettore MySQL per Python e le relative dipendenze:

    pip install mysql-connector-python
    

Ottenere informazioni di connessione

Ottenere le informazioni di connessione necessarie per connettersi al database di Azure per MySQL dal portale di Azure. È necessario avere il nome del server, il nome del database e le credenziali di accesso.

  1. Accedere al portale di Azure.

  2. Sulla barra di ricerca del portale cercare e selezionare il server di database di Azure per MySQL creato, ad esempio mydemoserver.

  3. Nella pagina Panoramica del server prendere nota dei valori riportati in Nome server e Nome di accesso dell'amministratore server. Se si dimentica la password, in questa pagina è anche possibile reimpostarla.

Esecuzione degli esempi di codice Python

Per ogni esempio di codice in questo articolo, eseguire queste operazioni.

  1. Creare un nuovo file in un editor di testo.

  2. Aggiungere l'esempio di codice al file. Nel codice sostituire i segnaposto <mydemoserver>, <myadmin>, <mypassword> e <mydatabase> con i valori relativi al server e al database MySQL.

  3. SSL è abilitato per impostazione predefinita nei server di Database di Azure per MySQL. Potrebbe essere necessario scaricare il certificato SSL DigiCertGlobalRootG2 per connettersi dall'ambiente locale. Sostituire il valore ssl_ca nel codice con il percorso del file nel proprio computer.

  4. Salvare il file in una cartella del progetto con estensione py, ad esempio C:\pythonmysql\createtable.py o /home/username/pythonmysql/createtable.py.

  5. Per eseguire il codice, aprire un prompt dei comandi o una shell cd pythonmysql e passare alla cartella del progetto, ad esempio bash. Digitare il comando python seguito dal nome file, ad esempio python createtable.py, quindi premere INVIO.

    Nota

    In Windows, se python.exe non viene trovato, potrebbe essere necessario aggiungere il percorso di Python nella variabile di ambiente PATH oppure specificare il percorso completo di python.exe, ad esempio C:\python27\python.exe createtable.py.

Passaggio 1: Creare una tabella e inserire i dati

Usare il codice seguente per connettersi al server e al database, creare una tabella e caricare i dati usando un'istruzione SQL INSERT. Il codice importa la libreria mysql.connector e usa il metodo:

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

Passaggio 2: Leggere i dati

Usare il codice seguente per connettersi e leggere i dati usando un'istruzione SQL SELECT. Il codice importa la libreria mysql.connector e usa il metodo cursor.execute() per eseguire la query SQL sul database MySQL.

Il codice legge le righe di dati usando il metodo fetchall(), mantiene il set di risultati in una riga della raccolta e usa un iteratore for per scorrere le righe in un ciclo.

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

Passaggio 3: Aggiornare i dati

Usare il codice seguente per connettersi e aggiornare i dati usando un'istruzione SQL UPDATE. Il codice importa la libreria mysql.connector e usa il metodo cursor.execute() per eseguire la query SQL sul database 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.")

Passaggio 4: Eliminare i dati

Usare il codice seguente per connettersi e rimuovere i dati usando un'istruzione SQL DELETE. Il codice importa la libreria mysql.connector e usa il metodo cursor.execute() per eseguire la query SQL sul database 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.")  

Pulire le risorse

Per pulire tutte le risorse usate in questo argomento di avvio rapido, eliminare il gruppo di risorse con il comando seguente:

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

Passaggi successivi