Quickstart: Python gebruiken om verbinding te maken met en query's uit te voeren op gegevens in Azure Database for MySQL

VAN TOEPASSING OP: Azure Database for MySQL - enkele server

Belangrijk

Azure Database for MySQL enkele server bevindt zich op het buitengebruikstellingspad. We raden u ten zeerste aan een upgrade uit te voeren naar een flexibele Azure Database for MySQL-server. Zie Wat gebeurt er met Azure Database for MySQL Enkele server voor meer informatie over migreren naar Azure Database for MySQL Flexibele server ?

In deze quickstart maakt u verbinding met een Azure Database for MySQL met behulp van Python. U gebruikt vervolgens SQL-instructies om gegevens op te vragen, in te voegen, bij te werken en te verwijderen in de database vanaf Mac-, Ubuntu Linux- en Windows-platforms.

Vereisten

Voor deze quickstart hebt u het volgende nodig:

Python en de MySQL-connector installeren

Installeer Python en de MySQL-connector voor Python op uw computer met behulp van de volgende stappen:

Notitie

In deze quickstart wordt MySQL Connector/Python Developer Guide gebruikt.

  1. Download en installeer Python 3.7 of hoger voor uw besturingssysteem. Zorg ervoor dat u Python toevoegt aan uw PATH, omdat de MySQL-connector dat vereist.

  2. Open een opdrachtprompt of bash shell en controleer uw Python-versie door python -V uit te voeren met de schakeloptie voor hoofdletter V.

  3. Het installatieprogramma voor het pip-pakket is opgenomen in de meest recente versies van Python. Werk pip bij naar de nieuwste versie door pip install -U pip uit te voeren.

    Als pip niet is geïnstalleerd, kunt u het downloaden en installeren met get-pip.py. Zie Installatie voor meer informatie.

  4. Gebruik pip om de MySQL-connector voor Python en de bijbehorende afhankelijkheden te installeren:

    pip install mysql-connector-python
    

Verbindingsgegevens ophalen

Haal de verbindingsgegevens op die nodig zijn om verbinding te maken met de Azure Database for MySQL van de Azure-portal. U hebt de servernaam, databasenaam en aanmeldingsreferenties nodig.

  1. Meld u aan bij de Azure-portal.

  2. Zoek en selecteer in de portalzoekbalk de Azure Database for MySQL server die u hebt gemaakt, zoals mydemoserver.

    Azure Database for MySQL server name

  3. Ga naar de pagina Overzicht van de server en noteer de Servernaam en de Aanmeldingsnaam van de serverbeheerder. Als u uw wachtwoord vergeet, kunt u het wachtwoord op deze pagina opnieuw instellen.

    Azure Database for MySQL server name 2

De Python-codevoorbeelden uitvoeren

Voor elk codevoorbeeld in dit artikel:

  1. Maak een nieuw bestand in een teksteditor.

  2. Voeg het codevoorbeeld toe aan het bestand. Vervang in de code de tijdelijke aanduidingen <mydemoserver>, <myadmin>, <mypassword>en <mydatabase> door de waarden voor uw MySQL-server en -database.

  3. SSL is standaard ingeschakeld op Azure Database for MySQL-servers. Mogelijk moet u het SSL-certificaat DigiCertGlobalRootG2 downloaden om verbinding te maken vanuit uw lokale omgeving. Vervang de ssl_ca waarde in de code door het pad naar dit bestand op uw computer.

  4. Sla het bestand op in een projectmap met de extensie .py, zoals C:\pythonmysql\createtable.py of /home/username/pythonmysql/createtable.py.

  5. Als u de code wilt uitvoeren, opent u een opdrachtprompt of bash-shell en wijzigt u vervolgens de map in uw projectmap, bijvoorbeeld cd pythonmysql. Typ de python-opdracht, gevolgd door de bestandsnaam (bijvoorbeeld python createtable.py) en druk op Enter.

    Notitie

    Als python.exe niet wordt gevonden, moet u in Windows mogelijk het volledige Python-pad naar de PATH-omgevingsvariabale opgeven, of het volledige pad naar python.exe opgeven, zoals C:\python27\python.exe createtable.py.

Stap 1: Een tabel maken en gegevens invoegen

Gebruik de volgende code om verbinding te maken met de server en database, een tabel te maken en gegevens te laden met behulp van de SQL-instructie INSERT. Met de code importeert u de bibliotheek mysql.connector en wordt de volgende methode gebruikt:

  • functie connect() om verbinding te maken met Azure Database for MySQL, met behulp van de argumenten in de config-verzameling.
  • met de methode cursor.execute wordt de SQL-query uitgevoerd op de MySQL-database.
  • cursor.close() wanneer u klaar bent met een cursor.
  • conn.close() om de verbinding met de verbinding te verbreken.
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.")

Stap 2: Gegevens lezen

Gebruik de volgende code om verbinding te maken en de gegevens te lezen met behulp van de SQL-instructie SELECT. Met de code importeert u de bibliotheek mysql.connector en met de methode cursor.execute() wordt de SQL-query uitgevoerd op de MySQL-database.

De code leest de gegevensrijen met behulp van de methode fetchall(), bewaart de resultatenset in een verzamelingrij en gebruikt een for-iterator om de rijen te doorlopen.

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.")

Stap 3: Gegevens bijwerken

Gebruik de volgende code om verbinding te maken en de gegevens bij te werken met behulp van de SQL-instructie UPDATE. Met de code importeert u de bibliotheek mysql.connector en met de methode cursor.execute() wordt de SQL-query uitgevoerd op de MySQL-database.

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.")

Stap 4: Gegevens verwijderen

Gebruik de volgende code om verbinding te maken en de gegevens te verwijderen met behulp van de SQL-instructie DELETE. Met de code importeert u de bibliotheek mysql.connector en met de methode cursor.execute() wordt de SQL-query uitgevoerd op de MySQL-database.

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.")  

Resources opschonen

Als u alle resources wilt opschonen die tijdens deze quickstart zijn gebruikt, verwijdert u de resourcegroep. Dit kan met de volgende opdracht:

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes

Volgende stappen