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:
Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
Creare un server singolo di Database di Azure per MySQL usando il portale di Azure
o in alternativa l'interfaccia della riga di comando di Azure.A seconda che si usi l'accesso pubblico o privato, completare UNA delle azioni seguenti per abilitare la connettività.
Azione Metodo di connettività Guida pratica Configurare le regole del firewall Pubblico Portale
CLIConfigurare l'endpoint di servizio Pubblico Portale
CLIConfigurare il collegamento privato Privata Portale
CLI
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.
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
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.
Accedere al portale di Azure.
Sulla barra di ricerca del portale cercare e selezionare il server di database di Azure per MySQL creato, 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.
Esecuzione degli esempi di codice Python
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.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.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
.
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:
- funzione connect() per connettersi a Database di Azure per MySQL usando gli argomenti presenti nella raccolta di configurazione.
- il metodo cursor.execute() esegue la query SQL sul database MySQL.
- cursor.close() al termine dell'utilizzo di un cursore.
- conn.close() per chiudere la connessione.
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