Szybki start: nawiązywanie połączeń z danymi w usłudze Azure Database for MySQL i wykonywanie na nich zapytań za pomocą języka Python — serwer elastyczny
W tym przewodniku Szybki start nawiąż połączenie z usługą Azure Database for MySQL — elastyczny serwer przy użyciu języka Python. Następnie użyjesz instrukcji SQL do wykonywania zapytań, wstawiania, aktualizowania i usuwania danych w bazie danych z platform Mac, Ubuntu Linux i Windows.
W tym artykule założono, że wiesz już, jak programować przy użyciu języka Python, ale dopiero zaczynasz pracę z usługą Azure Database for MySQL — serwer elastyczny.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure. Obecnie za pomocą bezpłatnego konta platformy Azure możesz wypróbować usługę Azure Database for MySQL — serwer elastyczny bezpłatnie przez 12 miesięcy. Aby uzyskać więcej informacji, zobacz Używanie bezpłatnego konta platformy Azure do bezpłatnego wypróbowania usługi Azure Database for MySQL — serwer elastyczny bezpłatnie.
- Wystąpienie serwera elastycznego usługi Azure Database for MySQL. Aby utworzyć wystąpienie serwera elastycznego usługi Azure Database for MySQL, zapoznaj się z przewodnikiem Szybki start: tworzenie wystąpienia usługi Azure Database for MySQL przy użyciu witryny Azure Portal lub szybkiego startu: tworzenie wystąpienia usługi Azure Database for MySQL — serwer elastyczny przy użyciu interfejsu wiersza polecenia platformy Azure.
Przygotowywanie stacji roboczej klienta
- Jeśli serwer elastyczny został utworzony z dostępem prywatnym (integracja z siecią wirtualną), musisz nawiązać połączenie z serwerem z zasobu w tej samej sieci wirtualnej co serwer. Możesz utworzyć maszynę wirtualną i dodać ją do sieci wirtualnej utworzonej przy użyciu serwera elastycznego. Zobacz Tworzenie sieci wirtualnych dla usługi Azure Database for MySQL — serwer elastyczny i zarządzanie nimi przy użyciu interfejsu wiersza polecenia platformy Azure.
- Jeśli serwer elastyczny został utworzony przy użyciu dostępu publicznego (dozwolone adresy IP), możesz dodać lokalny adres IP do listy reguł zapory na serwerze. Zobacz Zarządzanie regułami zapory dla usługi Azure Database for MySQL — serwer elastyczny przy użyciu interfejsu wiersza polecenia platformy Azure.
Instalowanie języka Python i łącznika programu MySQL
Zainstaluj język Python i łącznik MySQL dla języka Python na komputerze, wykonując następujące kroki:
Uwaga
W tym przewodniku Szybki start użyto nieprzetworzonego podejścia do zapytań SQL w celu nawiązania połączenia z bazą danych MySQL. Jeśli używasz struktury internetowej, użyj zalecanego łącznika dla platformy, na przykład mysqlclient for Django.
Pobierz i zainstaluj środowisko Python w wersji 3.7 lub nowszej dla systemu operacyjnego. Pamiętaj, aby dodać język Python do elementu
PATH
, ponieważ wymaga tego łącznik MySQL.Otwórz wiersz polecenia lub
bash
powłokę i sprawdź wersję języka Python, uruchamiając poleceniepython -V
z wielkim przełącznikiem V.Instalator
pip
pakietu jest uwzględniony w najnowszych wersjach języka Python. Przeprowadź aktualizacjępip
do najnowszej wersji, uruchamiając poleceniepip install -U pip
.Jeśli
pip
nie zainstalowano programu , możesz pobrać go i zainstalować za pomocą poleceniaget-pip.py
. Aby uzyskać więcej informacji, zobacz Instalacja.Użyj
pip
polecenia , aby zainstalować łącznik MySQL dla języka Python i jego zależności:pip install mysql-connector-python
Łącznik języka Python dla programu MySQL można również zainstalować z poziomu mysql.com. Aby uzyskać więcej informacji na temat łącznika MySQL dla języka Python, zobacz Przewodnik dewelopera łącznika MySQL/języka Python.
Pobieranie informacji o połączeniu
Uzyskaj informacje o połączeniu potrzebne do nawiązania połączenia z usługą Azure Database for MySQL — serwer elastyczny z witryny Azure Portal. Potrzebujesz nazwy serwera, nazwy bazy danych i poświadczeń logowania.
Zaloguj się w witrynie Azure Portal.
Na pasku wyszukiwania portalu wyszukaj i wybierz utworzone wystąpienie serwera elastycznego usługi Azure Database for MySQL, takie jak mydemoserver.
Na stronie Przegląd serwera zanotuj nazwę serwera i nazwę logowania administratora serwera. Jeśli zapomnisz hasło, możesz również zresetować hasło z tej strony.
Przykłady kodu
Uruchom poniższe przykłady kodu w języku Python
Dla każdego przykładu kodu w tym artykule:
Utwórz nowy plik w edytorze tekstów.
Dodaj przykładowy kod do pliku. W kodzie zastąp
<mydemoserver>
symbole zastępcze ,<myadmin>
<mypassword>
, i<mydatabase>
wartościami serwera i bazy danych MySQL.Zapisz plik w folderze projektu przy użyciu rozszerzenia .py , takiego jak C:\pythonmysql\createtable.py lub /home/username/pythonmysql/createtable.py.
Aby uruchomić kod, otwórz wiersz polecenia lub
bash
powłokę i zmień katalog na folder projektu, na przykładcd pythonmysql
.python
Wpisz polecenie, a następnie nazwę pliku, na przykładpython createtable.py
, i naciśnij Enter.Uwaga
Jeśli w systemie Windows nie znaleziono python.exe , może być konieczne dodanie ścieżki języka Python do zmiennej środowiskowej PATH lub podanie pełnej ścieżki do python.exe, na przykład
C:\python27\python.exe createtable.py
.
Tworzenie tabeli i wstawianie danych
Użyj poniższego kodu, aby nawiązać połączenie z serwerem i bazą danych, utworzyć tabelę i załadować dane przy użyciu instrukcji INSERT języka SQL.
Kod importuje bibliotekę mysql.connector i używa funkcji connect() do nawiązania połączenia z serwerem elastycznym przy użyciu argumentów w kolekcji konfiguracji. Kod używa kursora w połączeniu, a metoda cursor.execute() wykonuje zapytanie SQL względem bazy danych 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.")
Odczyt danych
Użyj poniższego kodu, aby nawiązać połączenie i odczytać dane za pomocą instrukcji SELECT języka SQL.
Kod importuje bibliotekę mysql.connector i używa funkcji connect() do nawiązania połączenia z serwerem elastycznym przy użyciu argumentów w kolekcji konfiguracji. Kod używa kursora w połączeniu, a metoda cursor.execute() wykonuje zapytanie SQL względem bazy danych MySQL.
Kod odczytuje wiersze danych przy użyciu metody fetchall(), przechowuje zestaw wyników w wierszu kolekcji i używa for
iteratora do pętli wierszy.
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.")
Aktualizowanie danych
Użyj poniższego kodu, aby nawiązać połączenie i zaktualizować dane za pomocą instrukcji UPDATE języka SQL.
Kod importuje bibliotekę mysql.connector i używa funkcji connect() do nawiązania połączenia z serwerem elastycznym przy użyciu argumentów w kolekcji konfiguracji. Kod używa kursora w połączeniu, a metoda cursor.execute() wykonuje zapytanie SQL względem bazy danych 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.")
Usuwanie danych
Użyj poniższego kodu, aby nawiązać połączenie i usunąć dane za pomocą instrukcji DELETE języka SQL.
Kod importuje bibliotekę mysql.connector i używa funkcji connect() do nawiązania połączenia z serwerem elastycznym przy użyciu argumentów w kolekcji konfiguracji. Kod używa kursora w połączeniu, a metoda cursor.execute() wykonuje zapytanie SQL względem bazy danych 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.")
Powiązana zawartość
- Łączenie z usługą Azure Database for MySQL — serwer elastyczny za pomocą szyfrowanego połączenia
- Pojęcia dotyczące łączności i sieci dla usługi Azure Database for MySQL — serwer elastyczny
- Zarządzanie regułami zapory dla usługi Azure Database for MySQL — serwer elastyczny przy użyciu witryny Azure Portal
- Tworzenie sieci wirtualnych dla usługi Azure Database for MySQL — serwer elastyczny i zarządzanie nimi przy użyciu witryny Azure Portal