Rychlý start: Použití Pythonu k připojení a dotazování dat na flexibilním serveru Azure Database for MySQL
V tomto rychlém startu se připojíte k flexibilnímu serveru 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.
Tento článek předpokládá, že máte zkušenosti s vývojem pomocí Pythonu, ale začínáte pracovat s flexibilním serverem Azure Database for MySQL.
Požadavky
- Účet Azure s aktivním předplatným.
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure, než začnete. V současné době můžete s bezplatným účtem Azure vyzkoušet flexibilní server Azure Database for MySQL zdarma po dobu 12 měsíců. Další informace najdete v tématu Použití bezplatného účtu Azure k vyzkoušení flexibilního serveru Azure Database for MySQL zdarma.
- Instance flexibilního serveru Azure Database for MySQL Pokud chcete vytvořit instanci flexibilního serveru Azure Database for MySQL, projděte si rychlý start: Vytvoření instance Azure Database for MySQL pomocí webu Azure Portal nebo rychlého startu: Vytvoření instance flexibilního serveru Azure Database for MySQL pomocí Azure CLI.
Příprava klientské pracovní stanice
- Pokud jste vytvořili flexibilní server s privátním přístupem (integrace virtuální sítě), budete se muset k serveru připojit z prostředku ve stejné virtuální síti jako váš server. Můžete vytvořit virtuální počítač a přidat ho do virtuální sítě vytvořené pomocí flexibilního serveru. Informace o vytváření a správě virtuálních sítí pro flexibilní server Azure Database for MySQL pomocí Azure CLI
- Pokud jste vytvořili flexibilní server s veřejným přístupem (povolené IP adresy), můžete místní IP adresu přidat do seznamu pravidel brány firewall na vašem serveru. Informace o správě pravidel brány firewall pro flexibilní server Azure Database for MySQL pomocí Azure CLI
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 pro připojení k MySQL používá nezpracovaný přístup k dotazům SQL. Pokud používáte webovou architekturu, použijte doporučený konektor pro architekturu, například mysqlclient pro Django.
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
Konektor Pythonu pro MySQL můžete nainstalovat také z mysql.com. Další informace o konektoru MySQL pro Python najdete v příručce pro vývojáře konektoru MySQL nebo Pythonu.
Získání informací o připojení
Získejte informace o připojení, které potřebujete pro připojení k flexibilnímu serveru 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 instanci flexibilního serveru Azure Database for MySQL, kterou 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.
Ukázky kódu
Spusťte níže uvedené ukázky 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.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 do proměnné prostředí PATH přidat cestu Pythonu nebo zadat úplnou cestu k python.exe, například
C:\python27\python.exe createtable.py
.
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 pomocí funkce connect() se připojí k flexibilnímu serveru pomocí argumentů v kolekci konfigurace. Kód používá kurzor na připojení a metoda 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>',
'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.")
Č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í funkce connect() se připojí k flexibilnímu serveru pomocí argumentů v kolekci konfigurace. Kód používá kurzor na připojení a metoda 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>',
'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.")
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í funkce connect() se připojí k flexibilnímu serveru pomocí argumentů v kolekci konfigurace. Kód používá kurzor na připojení a metoda 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>',
'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.")
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í funkce connect() se připojí k flexibilnímu serveru pomocí argumentů v kolekci konfigurace. Kód používá kurzor na připojení a metoda 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>',
'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.")
Související obsah
- Připojení k flexibilnímu serveru Azure Database for MySQL pomocí šifrovaných připojení
- Koncepty připojení a sítě pro flexibilní server Azure Database for MySQL
- Správa pravidel brány firewall pro flexibilní server Azure Database for MySQL pomocí webu Azure Portal
- Vytváření a správa virtuálních sítí pro flexibilní server Azure Database for MySQL pomocí webu Azure Portal