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

VAN TOEPASSING OP: Azure Database for MySQL - Flexibele server

In deze quickstart maakt u verbinding met flexibele Azure Database for MySQL-server 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.

In dit artikel wordt ervan uitgegaan dat u bekend bent met het ontwikkelen met Behulp van Python, maar geen ervaring hebt met het werken met flexibele Azure Database for MySQL-server.

Vereisten

Uw clientwerkstation voorbereiden

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 snelstart gebruikt u een onbewerkte SQL-query om verbinding te maken met MySQL. Als u een webframework gebruikt, moet u de aanbevolen connector voor deze frameworks gebruiken, zoals mysqlclient voor Django.

  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
    

    U kunt ook de Python-connector voor MySQL installeren vanuit mysql.com. Voor meer informatie over de MySQL-connector voor python raadpleegt u de ontwikkelaarshandleiding voor MySQL/Python.

Verbindingsgegevens ophalen

Haal de verbindingsgegevens op die u nodig hebt om verbinding te maken met de flexibele Azure Database for MySQL-server vanuit Azure Portal. U hebt de servernaam, databasenaam en aanmeldingsreferenties nodig.

  1. Meld u aan bij het Azure-portaal.

  2. Zoek en selecteer in de zoekbalk van de portal het exemplaar van de flexibele Azure Database for MySQL-server dat u hebt gemaakt, zoals mydemoserver.

  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.

Codevoorbeelden

De hieronder genoemde 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. Sla het bestand op in een projectmap met de extensie .py, zoals C:\pythonmysql\createtable.py of /home/username/pythonmysql/createtable.py.

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

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.

De code importeert de bibliotheek mysql.connector en gebruikt de functie connect() om verbinding te maken met flexibele server met behulp van de argumenten in de config-verzameling. De code gebruikt een cursor voor de verbinding en de methode cursor.execute() voert de SQL-query uit 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>',
  '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.")

Gegevens lezen

Gebruik de volgende code om verbinding te maken en de gegevens te lezen met behulp van de SQL-instructie SELECT.

De code importeert de bibliotheek mysql.connector en gebruikt de functie connect() om verbinding te maken met flexibele server met behulp van de argumenten in de config-verzameling. De code gebruikt een cursor voor de verbinding en de methode cursor.execute() voert de SQL-query uit 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>',
  '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.")

Gegevens bijwerken

Gebruik de volgende code om verbinding te maken en de gegevens bij te werken met behulp van de SQL-instructie UPDATE.

De code importeert de bibliotheek mysql.connector en gebruikt de functie connect() om verbinding te maken met flexibele server met behulp van de argumenten in de config-verzameling. De code gebruikt een cursor voor de verbinding en de methode cursor.execute() voert de SQL-query uit 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>',
  '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.")

Gegevens verwijderen

Gebruik de volgende code om verbinding te maken en de gegevens te verwijderen met behulp van de SQL-instructie DELETE.

De code importeert de bibliotheek mysql.connector en gebruikt de functie connect() om verbinding te maken met flexibele server met behulp van de argumenten in de config-verzameling. De code gebruikt een cursor voor de verbinding en de methode cursor.execute() voert de SQL-query uit 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>',
  '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.")

Volgende stappen