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
Un account Azure con una sottoscrizione attiva.
Se non si dispone di una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare. Attualmente, con un account gratuito di Azure, è possibile provare il server flessibile di Database MySQL di Azure gratuitamente per 12 mesi. Per altre informazioni, vedere Prova gratuitamente il server flessibile di Database MySQL di Azure.
Istanza del server flessibile Database di Azure per MySQL. Per creare un'istanza del server flessibile Database di Azure per MySQL, vedere Creare un'istanza del server flessibile Database di Azure per MySQL usando portale di Azure o Creare un Database di Azure per MySQL Istanza del server flessibile con l'interfaccia della riga di comando di Azure.
Preparazione della workstation client
- Se il server flessibile è stato creato con l'opzione per l'accesso privato (integrazione rete virtuale), sarà necessario connettersi al server da una risorsa all'interno della stessa rete virtuale usata dal server. È possibile creare una macchina virtuale e aggiungerla alla rete virtuale creata con il server flessibile. Fare riferimento a Creare e gestire una rete virtuale server flessibile Database di Azure per MySQL tramite l'interfaccia della riga di comando di Azure.
- Se il server flessibile è stato creato con l'opzione Accesso pubblico (indirizzi IP consentiti), è possibile aggiungere il proprio indirizzo IP locale all'elenco di regole del firewall nel server. Vedere Creare e gestire le regole del firewall del server flessibile di Database di Azure per MySQL tramite l'interfaccia della riga di comando di Azure.
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.
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.Aprire un prompt dei comandi o una shell
bash
e controllare la versione di Python eseguendopython -V
con l'opzione V in maiuscolo.Il programma di installazione del pacchetto
pip
è incluso nelle ultime versioni di Python. Aggiornarepip
alla versione più recente eseguendopip install -U pip
.Se
pip
non è installato, è possibile scaricarlo e installarlo conget-pip.py
. Per altre informazioni, vedere Installazione.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.
Accedere al portale di Azure.
Nella barra di ricerca del portale cercare e selezionare l'istanza del server flessibile Database di Azure per MySQL creata, ad esempio mydemoserver.
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.
Creare un nuovo file in un editor di testo.
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.Salvare il file in una cartella del progetto con estensione py, ad esempio C:\pythonmysql\createtable.py o /home/username/pythonmysql/createtable.py.
Per eseguire il codice, aprire un prompt dei comandi o una shell
cd pythonmysql
e passare alla cartella del progetto, ad esempiobash
. Digitare il comandopython
seguito dal nome file, ad esempiopython 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
- Connettività crittografata con Transport Layer Security (TLS 1.2) in Database di Azure per MySQL server flessibile.
- Vedere le informazioni sulle funzionalità di rete nel server flessibile di Database di Azure per MySQL.
- Creare e gestire le regole del firewall del server flessibile di Database di Azure per MySQL tramite il portale di Azure.
- Creare e gestire la rete virtuale del server flessibile di Database di Azure per MySQL tramite il portale di Azure.