Schnellstart: Verwenden von Python zum Herstellen einer Verbindung und zum Abfragen von Daten in Azure Database for MySQL Flexible Server

GILT FÜR: Azure Database for MySQL – Flexible Server

In diesem Schnellstart stellen Sie mit Python eine Verbindung zu Azure Database for MySQL flexible Server 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.

In diesem Artikel wird davon ausgegangen, dass Sie mit der Entwicklung mit Python vertraut sind, die Arbeit mit dem flexiblen Server Azure Database for MySQL jedoch neu für Sie ist.

Voraussetzungen

Vorbereiten der Clientarbeitsstation

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 dieser Schnellstartanleitung wird eine unformatierte SQL-Abfrage verwendet, um eine Verbindung mit MySQL herzustellen. Verwenden Sie bei Nutzung eines Webframeworks den empfohlenen Connector für das Framework, z. B. mysqlclient für Django.

  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
    

    Sie können den Python-Connector für MySQL auch über mysql.com installieren. Weitere Informationen zum MySQL-Connector für Python finden Sie unter Entwicklerhandbuch für MySQL-Connector/Python.

Abrufen von Verbindungsinformationen

Holen Sie sich die Verbindungsinformationen, die Sie benötigen, um sich mit dem flexiblen Server Azure Database for MySQL über das Azure-Portal zu verbinden. Sie benötigen den Servernamen, den Datenbanknamen und die Anmeldeinformationen.

  1. Melden Sie sich beim Azure-Portal an.

  2. Suchen Sie in der Suchleiste des Portals nach der flexiblen Serverinstanz von Azure Database for MySQL, die Sie erstellt haben, z. B. mydemoserver, und wählen Sie sie aus.

  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.

Codebeispiele

Ausführen der untenstehenden 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. Speichern Sie die Datei in einem Projektordner mit der Erweiterung .py, z. B. C:\pythonmysql\createtable.py oder /home/username/pythonmysql/createtable.py.

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

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.

Mit dem Code wird die Bibliothek „mysql.connector“ importiert und die Funktion connect() verwendet, um eine Verbindung zum flexiblen Server herzustellen. Hierfür werden die Argumente in der config-Sammlung genutzt. Im Code wird ein Cursor für die Verbindung verwendet, und mit der cursor.execute()-Methode wird die SQL-Abfrage 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>',
  '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.")

Lesen von Daten

Verwenden Sie den folgenden Code, um die Daten mit einer SQL-Anweisung des Typs SELECT zu verbinden und zu lesen.

Mit dem Code wird die Bibliothek „mysql.connector“ importiert und die Funktion connect() verwendet, um eine Verbindung zum flexiblen Server herzustellen. Hierfür werden die Argumente in der config-Sammlung genutzt. Im Code wird ein Cursor für die Verbindung verwendet, und mit der cursor.execute()-Methode wird die SQL-Abfrage 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>',
  '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.")

Aktualisieren von Daten

Verwenden Sie den folgenden Code, um die Daten mit einer SQL-Anweisung des Typs UPDATE zu verbinden und zu aktualisieren.

Mit dem Code wird die Bibliothek „mysql.connector“ importiert und die Funktion connect() verwendet, um eine Verbindung zum flexiblen Server herzustellen. Hierfür werden die Argumente in der config-Sammlung genutzt. Im Code wird ein Cursor für die Verbindung verwendet, und mit der cursor.execute()-Methode wird die SQL-Abfrage 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>',
  '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.")

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.

Mit dem Code wird die Bibliothek „mysql.connector“ importiert und die Funktion connect() verwendet, um eine Verbindung zum flexiblen Server herzustellen. Hierfür werden die Argumente in der config-Sammlung genutzt. Im Code wird ein Cursor für die Verbindung verwendet, und mit der cursor.execute()-Methode wird die SQL-Abfrage 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>',
  '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.")

Nächste Schritte