Guida introduttiva: Usare Python per connettersi ed eseguire query sui dati in Database di Azure per MySQL - Server flessibile

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

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

Questo articolo presuppone che si abbia familiarità con lo sviluppo con Python, ma non con il server flessibile di Database di Azure per MySQL.

Prerequisiti

Preparazione della workstation client

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 un approccio basato su una query SQL non elaborata per connettersi a MySQL. Se si usa un framework Web, usare il connettore consigliato, ad esempio mysqlclient per Django.

  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
    

    È anche possibile installare il connettore Python per MySQL da mysql.com. Per altre informazioni sul connettore MySQL per Python, vedere Guida dello sviluppatore per il connettore MySQL/Python.

Ottenere informazioni di connessione

Ottenere le informazioni di connessione necessarie per connettersi al server flessibile di 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. Nella barra di ricerca del portale cercare e selezionare l'istanza del server flessibile Database di Azure per MySQL creata, 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.

Esempi di codice

Eseguire gli esempi di codice Python seguenti

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. Salvare il file in una cartella del progetto con estensione py, ad esempio C:\pythonmysql\createtable.py o /home/username/pythonmysql/createtable.py.

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

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 la funzione connect() per connettersi al server flessibile con gli argomenti 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.

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

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 la funzione connect() per connettersi al server flessibile con gli argomenti 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.

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

Aggiornamento dei 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 la funzione connect() per connettersi al server flessibile con gli argomenti 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.

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

Eliminare 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 la funzione connect() per connettersi al server flessibile con gli argomenti 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.

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

Passaggi successivi