Schnellstart: Verwenden von Python zum Herstellen einer Verbindung und zum Abfragen von Daten in Azure Database for MySQL
GILT FÜR: Azure Database for MySQL – Single Server
Wichtig
Azure Database for MySQL Single Server wird eingestellt. Es wird dringend empfohlen, ein Upgrade auf Azure Database for MySQL Flexible Server auszuführen. Weitere Informationen zum Migrieren zu Azure Database for MySQL Flexible Server finden Sie unter Was geschieht mit Azure Database for MySQL Single Server?
In dieser Schnellstartanleitung stellen Sie unter Verwendung von Python eine Verbindung mit einer Azure Database for MySQL-Instanz her. Anschließend verwenden Sie SQL-Anweisungen, um Daten in der Datenbank über Mac-, Ubuntu Linux- und Windows-Plattformen abzufragen, einzufügen, zu aktualisieren und zu löschen.
Voraussetzungen
Für diese Schnellstartanleitung benötigen Sie Folgendes:
Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
Erstellen eines Azure Database for MySQL-Einzelservers mithilfe des Azure-Portals
oder der Azure CLI, wenn Sie noch keinen besitzen.Je nachdem, ob Sie öffentlichen oder privaten Zugriff verwenden, führen Sie EINE der folgenden Aktionen aus, um Konnektivität herzustellen:
Action Konnektivitätsmethode Schrittanleitung Konfigurieren von Firewallregeln Öffentlich Portal
BEFEHLSZEILENSCHNITTSTELLE (CLI)Konfigurieren des Dienstendpunkts Öffentlich Portal
BEFEHLSZEILENSCHNITTSTELLE (CLI)Konfigurieren von Private Link Privat Portal
BEFEHLSZEILENSCHNITTSTELLE (CLI)Erstellen einer Datenbank und eines Nicht-Administratorbenutzers
Installieren von Python und dem MySQL-Connector
Führen Sie die folgenden Schritte aus, um Python und den MySQL-Connector für Python auf Ihrem Computer zu installieren:
Hinweis
In diesem Schnellstart wird das MySQL-Connector-/Python-Entwicklerhandbuch verwendet.
Laden Sie Python 3.7 oder höher für Ihr Betriebssystem herunter, und führen Sie die Installation durch. Stellen Sie sicher, dass Sie Python unter
PATH
hinzufügen, da dies für den MySQL-Connector erforderlich ist.Öffnen Sie eine Eingabeaufforderung oder eine
bash
-Shell, und überprüfen Sie Ihre Python-Version, indem Siepython -V
ausführen (Switch „V“ als Großbuchstabe).Das Installationsprogramm für das
pip
-Paket ist in den aktuellen Versionen von Python enthalten. Führen Sie fürpip
das Update auf die aktuelle Version durch, indem Siepip install -U pip
ausführen.Wenn
pip
nicht installiert ist, können Sieget-pip.py
zum Herunterladen und Installieren verwenden. Weitere Informationen finden Sie unter Installation.Verwenden Sie
pip
, um den MySQL-Connector für Python und die Abhängigkeiten zu installieren:pip install mysql-connector-python
Abrufen von Verbindungsinformationen
Sie können die Verbindungsinformationen, die Sie zum Herstellen einer Verbindung mit Azure Database for MySQL benötigen, über das Azure-Portal ermitteln. Sie benötigen den Servernamen, den Datenbanknamen und die Anmeldeinformationen.
Melden Sie sich beim Azure-Portal an.
Suchen Sie im Portal in der Suchleiste nach dem von Ihnen erstellten Azure Database for MySQL-Server, z. B. mydemoserver, und wählen Sie ihn aus.
Notieren Sie sich auf der Seite Übersicht des Servers den Servernamen und die Anmelde-ID des Serveradministrators. Falls Sie Ihr Kennwort vergessen haben, können Sie es auf dieser Seite auch zurücksetzen.
Ausführen der Python-Codebeispiele
Führen Sie für jedes Codebeispiel in diesem Artikel die folgenden Schritte aus:
Erstellen Sie eine neue Datei in einem Text-Editor.
Fügen Sie der Datei das Codebeispiel hinzu. Ersetzen Sie im Code die Platzhalter
<mydemoserver>
,<myadmin>
,<mypassword>
und<mydatabase>
durch die Werte für Ihren MySQL-Server und die zugehörige Datenbank.Für Azure Database for MySQL-Server ist SSL standardmäßig aktiviert. Möglicherweise müssen Sie das SSL-Zertifikat „DigiCertGlobalRootG2“ herunterladen, um eine Verbindung von der lokalen Umgebung herzustellen. Ersetzen Sie den Wert
ssl_ca
im Code durch den Pfad zu dieser Datei auf Ihrem Computer.Speichern Sie die Datei in einem Projektordner mit der Erweiterung .py, z. B. C:\pythonmysql\createtable.py oder /home/username/pythonmysql/createtable.py.
Öffnen Sie zum Ausführen des Codes eine Eingabeaufforderung oder
bash
-Shell, und wechseln Sie in Ihren Projektordner, indem Sie beispielsweisecd pythonmysql
ausführen. Geben Sie den Befehlpython
gefolgt vom Dateinamen ein (z. B.python createtable.py
), und drücken Sie die EINGABETASTE.Hinweis
Falls python.exe unter Windows nicht gefunden wird, müssen Sie Ihrer PATH-Umgebungsvariablen ggf. den Python-Pfad hinzufügen oder den vollständigen Pfad zu python.exe angeben, z. B.
C:\python27\python.exe createtable.py
.
Schritt 1: Erstellen einer Tabelle und Einfügen von Daten
Verwenden Sie den folgenden Code, um eine Verbindung mit dem Server und der Datenbank herzustellen, eine Tabelle zu erstellen und die Daten mit einer SQL-Anweisung vom Typ INSERT zu laden. Durch den Code wird die Bibliothek „mysql.connector“ importiert und die folgende Methode verwendet:
- Die Funktion connect() wird verwendet, um unter Verwendung der Argumente in der CONFIG-Sammlung eine Verbindung mit Azure Database for MySQL herzustellen.
- Durch die Methode cursor.execute() wird die SQL-Abfrage für die MySQL-Datenbank ausgeführt.
- cursor.close() wird nach der Verwendung eines Cursors ausgeführt.
- conn.close() wird zum Schließen der Verbindung ausgeführt.
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.")
Schritt 2: Lesen von Daten
Verwenden Sie den folgenden Code, um die Daten mit einer SQL-Anweisung des Typs SELECT zu verbinden und zu lesen. Durch den Code werden die Bibliothek „mysql.connector“ importiert und die SQL-Abfrage mithilfe der Methode cursor.execute() für die MySQL-Datenbank ausgeführt.
Der Code liest die Datenzeilen mit der fetchall()-Methode, legt die Ergebnisse in einer Zeile der Auflistung ab und verwendet einen for
-Iterator, um einen Schleifenvorgang für die Zeilen durchzuführen.
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.")
Schritt 3: Aktualisieren von Daten
Verwenden Sie den folgenden Code, um die Daten mit einer SQL-Anweisung des Typs UPDATE zu verbinden und zu aktualisieren. Durch den Code werden die Bibliothek „mysql.connector“ importiert und die SQL-Abfrage mithilfe der Methode cursor.execute() für die MySQL-Datenbank ausgeführt.
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.")
Schritt 4: Löschen von Daten
Verwenden Sie den folgenden Code, um eine Verbindung herzustellen und die Daten mithilfe einer SQL-Anweisung des Typs DELETE zu entfernen. Durch den Code werden die Bibliothek „mysql.connector“ importiert und die SQL-Abfrage mithilfe der Methode cursor.execute() für die MySQL-Datenbank ausgeführt.
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.")
Bereinigen von Ressourcen
Löschen Sie die Ressourcengruppe mit dem folgenden Befehl, um alle in dieser Schnellstartanleitung verwendeten Ressourcen zu bereinigen:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes