Краткое руководство. Подключение к Базе данных Azure для MySQL и запрос данных с помощью Python

Область применения: База данных Azure для MySQL — отдельный сервер

Из этого краткого руководства вы узнаете, как подключиться к Базе данных Azure для MySQL с использованием Python. Также вы узнаете, как использовать инструкции SQL для запроса, вставки, обновления и удаления данных в базе данных на платформах Windows, Mac и Ubuntu Linux.

Предварительные требования

Для целей этого краткого руководства понадобится:

Установка Python и соединителя MySQL

Установите Python и соединитель MySQL для Python на компьютере с помощью приведенных ниже шагов.

Примечание

В этом кратком руководстве используется руководство для разработчика соединителя MySQL или Python.

  1. Загрузите и установите Python 3.7 или выше для вашей ОС. Не забудьте добавить Python в PATH, потому что это нужно для соединителя MySQL.

  2. Откройте командную строку или оболочку bash и проверьте версию Python, запустив python -V с помощью коммутатора V прописными буквами.

  3. Установщик пакетов pip включено в последние версии Python. Обновите pip до последней версии, запустив pip install -U pip.

    Если pip не установлен, можно скачать и установить его с get-pip.py. Дополнительные сведения см. в разделе Установка.

  4. Используйте pip чтоб установить соединитель MySQL для Python и его зависимости.

    pip install mysql-connector-python
    

Возникли проблемы? Сообщите нам об этом

Получение сведений о подключении

Получите сведения, необходимые для подключения к базе данных Azure для MySQL с портала Azure. Вам потребуется имя сервера, имя базы данных и учетные данные для входа.

  1. Войдите на портал Azure.

  2. На панели поиска портала найдите и выберите базу данных Azure для сервера MySQL, которую вы создали, например, mydemoserver.

    Имя сервера базы данных Azure для MySQL

  3. Запишите имя сервера и имя для входа администратора сервера со страницы сервера Обзор. Если вы забыли свой пароль, можно также сбросить пароль с помощью этой страницы.

    Имя сервера Базы данных Azure для MySQL (2)

Шаг 1. Создание таблицы и вставка данных

Используйте следующий код для подключения к серверу и базе данных, создания таблицы и загрузки данных с помощью инструкции SQL INSERT. Код импортирует библиотеку mysql.connector и использует следующие методы:

  • connect() используется для подключения Базы данных Azure для MySQL с помощью аргументов из коллекции конфигураций;
  • cursor.execute() выполняет запрос SQL к базе данных MySQL;
  • cursor.close() используется при завершении работы с курсором;
  • mysqli_close используется, чтобы закрыть подключение.

Важно!

  • Протокол SSL включен по умолчанию. Для подключения из локальной среды может потребоваться скачать SSL-сертификат DigiCertGlobalRootG2.
  • В коде замените заполнители <mydemoserver>, <myadmin>, <mypassword> и <mydatabase> значениями для сервера MySQL и базы данных.
import mysql.connector
from mysql.connector import errorcode

# Obtain connection string information from the portal

[!INCLUDE[applies-to-mysql-single-server](includes/applies-to-mysql-single-server.md)]
config = {
  'host':'<mydemoserver>.mysql.database.azure.com',
  'user':'<myadmin>@<mydemoserver>',
  'password':'<mypassword>',
  'database':'<mydatabase>',
  'client_flags': [mysql.connector.ClientFlag.SSL],
  'ssl_ca': '/var/wwww/html/DigiCertGlobalRootG2.crt.pem'
}

# Construct connection string

[!INCLUDE[applies-to-mysql-single-server](includes/applies-to-mysql-single-server.md)]
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.")

Возникли проблемы? Сообщите нам об этом

Шаг 2. Чтение данных

Используйте указанный ниже код с инструкцией SQL SELECT для подключения и чтения данных. Код импортирует библиотеку mysql.connector и использует метод cursor.execute() для выполнения запроса SQL к базе данных MySQL.

Код считывает строки данных с помощью метода fetchall(), сохраняет набор результатов в строке коллекции и использует итератор for для циклического перемещения по строкам.

  # 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])))

Шаг 3. Обновление данных

Используйте указанный ниже код с инструкцией SQL UPDATE для подключения и обновления данных. Код импортирует библиотеку mysql.connector и использует метод cursor.execute() для выполнения запроса SQL к базе данных MySQL.

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

Шаг 4. Удаление данных

Используйте указанный ниже код с инструкцией SQL DELETE для подключения и удаления данных. Код импортирует библиотеку mysql.connector и использует метод cursor.execute() для выполнения запроса SQL к базе данных MySQL.


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

Очистка ресурсов

Чтобы очистить все ресурсы, используемые во время этого краткого руководства, удалите группу ресурсов с помощью следующей команды:

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

Дальнейшие действия

Не можете найти нужную информацию? Сообщите нам!