Краткое руководство. Использование Python для подключения и запроса данных в База данных Azure для MySQL — гибкий сервер

ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — гибкий сервер

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

В этой статье предполагается, что вы знакомы с разработкой с помощью Python, но вы не знакомы с База данных Azure для MySQL гибким сервером.

Необходимые компоненты

Подготовка клиентской рабочей станции

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

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

Примечание.

В этом кратком руководстве при подключении к MySQL используются простые SQL-запросы. Если вы применяете веб-платформу, используйте для нее рекомендуемый соединитель, например, mysqlclient для Django.

  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
    

    Соединитель Python для MySQL также можно установить из mysql.com. Дополнительные сведения о соединителе MySQL для Python см. в руководстве MySQL Connector/Python Developer Guide (Соединитель MySQL/Руководство разработчика Python).

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

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

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

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

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

Примеры кода

Выполните приведенные ниже примеры кода Python.

Для каждого примера кода в этой статье сделайте следующее:

  1. Создайте файл в текстовом редакторе.

  2. Добавьте пример кода в файл. В коде замените заполнители <mydemoserver>, <myadmin>, <mypassword>, и заполнители <mydatabase> значениями для сервера MySQL и базы данных.

  3. Сохраните файл в папку проекта с расширением .ру, например С:\pythonmysql\createtable.py или /home/username/pythonmysql/createtable.py.

  4. Чтобы запустить код, откройте командную строку или оболочку bash и измените каталог в папке проекта, например cd pythonmysql. Введите команду python за которой следует имя файла, например python createtable.py, и нажмите клавишу ВВОД.

    Примечание.

    В Windows, если файл python.exe не найден, может потребоваться добавить путь Python в переменную среды PATH или указать полный путь к python.exe, например C:\python27\python.exe createtable.py.

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

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

Этот код позволяет импортировать библиотеку mysql.connector и применить функцию connect() для подключения к гибкому серверу с помощью аргументов в коллекции конфигураций. Код использует курсор при подключении, а метод cursor.execute() выполняет SQL-запрос к базе данных 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.")

Чтение данных

Используйте указанный ниже код с инструкцией SQL SELECT для подключения и чтения данных.

Этот код позволяет импортировать библиотеку mysql.connector и применить функцию connect() для подключения к гибкому серверу с помощью аргументов в коллекции конфигураций. Код использует курсор при подключении, а метод cursor.execute() выполняет SQL-запрос к базе данных MySQL.

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

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

Обновление данных

Используйте указанный ниже код с инструкцией SQL UPDATE для подключения и обновления данных.

Этот код позволяет импортировать библиотеку mysql.connector и применить функцию connect() для подключения к гибкому серверу с помощью аргументов в коллекции конфигураций. Код использует курсор при подключении, а метод cursor.execute() выполняет SQL-запрос к базе данных 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.")

Удаление данных

Используйте указанный ниже код с инструкцией SQL DELETE для подключения и удаления данных.

Этот код позволяет импортировать библиотеку mysql.connector и применить функцию connect() для подключения к гибкому серверу с помощью аргументов в коллекции конфигураций. Код использует курсор при подключении, а метод cursor.execute() выполняет SQL-запрос к базе данных 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.")

Следующие шаги