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:
Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
Vytvoření jednoúčelového serveru Azure Database for MySQL pomocí webu Azure Portal
nebo Azure CLI , pokud ho nemáte.Na základě toho, jestli používáte veřejný nebo privátní přístup, dokončete jednu z následujících akcí a povolte připojení.
Akce Metoda připojení Praktičtí průvodci Konfigurace pravidel brány firewall Veřejná Azure Portal
Rozhraní příkazového řádkuKonfigurace koncového bodu služby Veřejná Azure Portal
Rozhraní příkazového řádkuKonfigurace privátního propojení Privátní Azure Portal
Rozhraní příkazového řádku
Instalace Pythonu a konektoru MySQL
Pomocí následujícího postupu nainstalujte Python a konektor MySQL pro Python do počítače:
Poznámka:
V tomto rychlém startu se používá Příručka pro vývojáře konektoru MySQL nebo Pythonu.
Stáhněte a nainstalujte Python 3.7 nebo novější pro váš operační systém. Nezapomeňte do svého
PATH
počítače přidat Python, protože konektor MySQL to vyžaduje.Otevřete příkazový řádek nebo
bash
prostředí a zkontrolujte verzi Pythonu spuštěnímpython -V
přepínače V velkými písmeny.Instalační
pip
program balíčku je součástí nejnovějších verzí Pythonu. Aktualizujtepip
na nejnovější verzi spuštěnímpip install -U pip
příkazu .Pokud
pip
není nainstalovaný, můžete si ho stáhnout a nainstalovat pomocíget-pip.py
nástroje . Další informace naleznete v tématu Instalace.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.
Přihlaste se k portálu Azure.
Na panelu hledání na portálu vyhledejte a vyberte server Azure Database for MySQL, který jste vytvořili, například mydemoserver.
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.
Spuštění ukázek kódu Pythonu
Pro každý příklad kódu v tomto článku:
Vytvořte nový soubor v textovém editoru.
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.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.Uložte soubor do složky projektu s příponou .py , například C:\pythonmysql\createtable.py nebo /home/username/pythonmysql/createtable.py.
Pokud chcete kód spustit, otevřete příkazový řádek nebo
bash
prostředí a změňte adresář do složky projektu, napříkladcd pythonmysql
.python
Zadejte příkaz následovaný názvem souboru, napříkladpython createtable.py
a stiskněte Enter.Poznámka:
Pokud python.exe ve Windows nenajdete, možná budete muset cestu Pythonu přidat 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:
- Funkce connect() pro připojení ke službě Azure Database for MySQL pomocí argumentů v kolekci konfigurace.
- cursor.execute() metoda provede dotaz SQL na databázi MySQL.
- cursor.close() po dokončení pomocí kurzoru.
- conn.close() pro zavření připojení.
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