Rychlý start: Použití Pythonu k připojení a dotazování dat ve službě Azure Database for MySQL

PLATÍ PRO: Jednoúčelový server Azure Database for MySQL

Důležité

Jednoúčelový server Azure Database for MySQL je na cestě vyřazení. Důrazně doporučujeme upgradovat na flexibilní server Azure Database for MySQL. Další informace o migraci na flexibilní server Azure Database for MySQL najdete v tématu Co se děje s jednoúčelovým serverem Azure Database for MySQL?

V tomto rychlém startu se připojíte ke službě Azure Database for MySQL pomocí Pythonu. Pak použijete příkazy SQL k dotazování, vkládání, aktualizaci a odstraňování dat v databázi z platforem Mac, Ubuntu Linux a Windows.

Požadavky

Pro účely tohoto rychlého startu potřebujete:

Instalace Pythonu a konektoru MySQL

Pomocí následujícího postupu nainstalujte Python a konektor MySQL pro Python do počítače:

Poznámka:

Tento rychlý start používá MySQL Připojení or/Python Developer Guide.

  1. Stáhněte a nainstalujte Python 3.7 nebo novější pro váš operační systém. Nezapomeňte do svého PATHpočítače přidat Python, protože konektor MySQL to vyžaduje.

  2. Otevřete příkazový řádek nebo bash prostředí a zkontrolujte verzi Pythonu spuštěním python -V přepínače V velkými písmeny.

  3. Instalační pip program balíčku je součástí nejnovějších verzí Pythonu. Aktualizujte pip na nejnovější verzi spuštěním pip install -U pippříkazu .

    Pokud pip není nainstalovaný, můžete si ho stáhnout a nainstalovat pomocí get-pip.pynástroje . Další informace naleznete v tématu Instalace.

  4. Slouží pip k instalaci konektoru MySQL pro Python a jeho závislostí:

    pip install mysql-connector-python
    

Získání informací o připojení

Získejte informace o připojení, které potřebujete pro připojení ke službě Azure Database for MySQL, z webu Azure Portal. Potřebujete název serveru, název databáze a přihlašovací údaje.

  1. Přihlaste se k portálu Azure.

  2. Na panelu hledání na portálu vyhledejte a vyberte server Azure Database for MySQL, který jste vytvořili, například mydemoserver.

    Azure Database for MySQL server name

  3. Na stránce Přehled serveru si poznamenejte název serveru a přihlašovací jméno správce serveru. Pokud heslo zapomenete, můžete ho také resetovat z této stránky.

    Azure Database for MySQL server name 2

Spuštění ukázek kódu Pythonu

Pro každý příklad kódu v tomto článku:

  1. Vytvořte nový soubor v textovém editoru.

  2. Přidejte do souboru příklad kódu. V kódu nahraďte <mydemoserver>hodnoty <myadmin><mypassword>serveru a <mydatabase> databáze MySQL a zástupné symboly hodnotami.

  3. Protokol SSL je ve výchozím nastavení povolený na serverech Azure Database for MySQL. Možná budete muset stáhnout certifikát SSL DigiCertGlobalRootG2 pro připojení z místního prostředí. ssl_ca Nahraďte hodnotu v kódu cestou k tomuto souboru v počítači.

  4. Uložte soubor do složky projektu s příponou .py , například C:\pythonmysql\createtable.py nebo /home/username/pythonmysql/createtable.py.

  5. Pokud chcete kód spustit, otevřete příkazový řádek nebo bash prostředí a změňte adresář do složky projektu, například cd pythonmysql. python Zadejte příkaz následovaný názvem souboru, například python createtable.pya stiskněte Enter.

    Poznámka:

    Pokud se ve Windows nenajde python.exe , možná budete muset přidat cestu Pythonu do proměnné prostředí PATH nebo zadat úplnou cestu k python.exe, například C:\python27\python.exe createtable.py.

Krok 1: Vytvoření tabulky a vložení dat

Pomocí následujícího kódu se připojte k serveru a databázi, vytvořte tabulku a načtěte data pomocí příkazu INSERT SQL. Kód naimportuje knihovnu mysql.connector a používá metodu:

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

Krok 2: Čtení dat

Pomocí následujícího kódu se připojte a načtěte data s využitím příkazu SELECT jazyka SQL. Kód naimportuje knihovnu mysql.connector a pomocí metody cursor.execute() provede dotaz SQL na databázi MySQL.

Kód přečte řádky dat pomocí metody fetchall(), zachová sadu výsledků v řádku kolekce a pomocí iterátoru for přes řádky.

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

Krok 3: Aktualizace dat

Pomocí následujícího kódu se připojte a aktualizujte data s využitím příkazu UPDATE jazyka SQL. Kód naimportuje knihovnu mysql.connector a pomocí metody cursor.execute() provede dotaz SQL na databázi MySQL.

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

Krok 4: Odstranění dat

Pomocí následujícího kódu se připojte a odeberte data s využitím příkazu DELETE jazyka SQL. Kód naimportuje knihovnu mysql.connector a pomocí metody cursor.execute() provede dotaz SQL na databázi MySQL.

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

Vyčištění prostředků

Pokud chcete vyčistit všechny prostředky použité během tohoto rychlého startu, odstraňte skupinu prostředků pomocí následujícího příkazu:

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

Další kroky