Udostępnij za pośrednictwem


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.

Przygotowywanie stacji roboczej klienta

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.

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

  2. Otwórz wiersz polecenia lub bash powłokę i sprawdź wersję języka Python, uruchamiając polecenie python -V z wielkim przełącznikiem V.

  3. Instalator pip pakietu jest uwzględniony w najnowszych wersjach języka Python. Przeprowadź aktualizację pip do najnowszej wersji, uruchamiając polecenie pip install -U pip.

    Jeśli pip nie zainstalowano programu , możesz pobrać go i zainstalować za pomocą polecenia get-pip.py. Aby uzyskać więcej informacji, zobacz Instalacja.

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

  1. Zaloguj się w witrynie Azure Portal.

  2. Na pasku wyszukiwania portalu wyszukaj i wybierz utworzone wystąpienie serwera elastycznego usługi Azure Database for MySQL, takie jak mydemoserver.

  3. 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:

  1. Utwórz nowy plik w edytorze tekstów.

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

  3. Zapisz plik w folderze projektu przy użyciu rozszerzenia .py , takiego jak C:\pythonmysql\createtable.py lub /home/username/pythonmysql/createtable.py.

  4. Aby uruchomić kod, otwórz wiersz polecenia lub bash powłokę i zmień katalog na folder projektu, na przykład cd pythonmysql. python Wpisz polecenie, a następnie nazwę pliku, na przykład python 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.")