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 is on the retirement path. Es wird dringend empfohlen, ein Upgrade auf azure Database for MySQL flexiblen Server durchzufü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:

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.

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

  2. Öffnen Sie eine Eingabeaufforderung oder eine bash-Shell, und überprüfen Sie Ihre Python-Version, indem Sie python -V ausführen (Switch „V“ als Großbuchstabe).

  3. Das Installationsprogramm für das pip-Paket ist in den aktuellen Versionen von Python enthalten. Führen Sie für pip das Update auf die aktuelle Version durch, indem Sie pip install -U pip ausführen.

    Wenn pip nicht installiert ist, können Sie get-pip.py zum Herunterladen und Installieren verwenden. Weitere Informationen finden Sie unter Installation.

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

  1. Melden Sie sich beim Azure-Portal an.

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

    Azure Database for MySQL server name

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

    Azure Database for MySQL server name 2

Ausführen der Python-Codebeispiele

Führen Sie für jedes Codebeispiel in diesem Artikel die folgenden Schritte aus:

  1. Erstellen Sie eine neue Datei in einem Text-Editor.

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

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

  4. Speichern Sie die Datei in einem Projektordner mit der Erweiterung .py, z. B. C:\pythonmysql\createtable.py oder /home/username/pythonmysql/createtable.py.

  5. Öffnen Sie zum Ausführen des Codes eine Eingabeaufforderung oder bash-Shell, und wechseln Sie in Ihren Projektordner, indem Sie beispielsweise cd pythonmysql ausführen. Geben Sie den Befehl python 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

Nächste Schritte