Краткое руководство. Использование Python для подключения и запроса данных в База данных Azure для MySQL
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — отдельный сервер
Важно!
База данных Azure для MySQL один сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для MySQL гибкого сервера. Дополнительные сведения о миграции на гибкий сервер База данных Azure для MySQL см. в статье "Что происходит с одним сервером База данных Azure для MySQL?"
Из этого краткого руководства вы узнаете, как подключиться к Базе данных Azure для MySQL с использованием Python. Также вы узнаете, как использовать инструкции SQL для запроса, вставки, обновления и удаления данных в базе данных на платформах Windows, Mac и Ubuntu Linux.
Необходимые компоненты
Для целей этого краткого руководства понадобится:
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Создать отдельный сервер Базы данных Azure для MySQL с помощью портала Azure
или с помощью Azure CLI, если он еще не создан.Выполнить ОДНО из действий (в зависимости от того, пользуетесь вы общим или частным доступом), чтобы настроить возможность подключения.
Действие Метод подключения Практическое руководство Настройка правил брандмауэра Общедоступный Портал
CLIНастройка конечной точки службы Общедоступный Портал
CLIНастройка приватного канала Private Портал
CLIСоздание базы данных и пользователя без прав администратора.
Установка Python и соединителя MySQL
Установите Python и соединитель MySQL для Python на компьютере с помощью приведенных ниже шагов.
Примечание.
В этом кратком руководстве используется руководство для разработчика соединителя MySQL или Python.
Загрузите и установите Python 3.7 или выше для вашей ОС. Не забудьте добавить Python в
PATH
, потому что это нужно для соединителя MySQL.Откройте командную строку или оболочку
bash
и проверьте версию Python, запустивpython -V
с помощью коммутатора V прописными буквами.Установщик пакетов
pip
включено в последние версии Python. Обновитеpip
до последней версии, запустивpip install -U pip
.Если
pip
не установлен, можно скачать и установить его сget-pip.py
. Дополнительные сведения см. в разделе Установка.Используйте
pip
чтоб установить соединитель MySQL для Python и его зависимости.pip install mysql-connector-python
Получение сведений о подключении
Получите сведения, необходимые для подключения к базе данных Azure для MySQL с портала Azure. Вам потребуется имя сервера, имя базы данных и учетные данные для входа.
Войдите на портал Azure.
На панели поиска портала найдите и выберите базу данных Azure для сервера MySQL, которую вы создали, например, mydemoserver.
Запишите имя сервера и имя для входа администратора сервера со страницы сервера Обзор. Если вы забыли свой пароль, можно также сбросить пароль с помощью этой страницы.
Выполнение примеров кода Python
Для каждого примера кода в этой статье сделайте следующее:
Создайте файл в текстовом редакторе.
Добавьте пример кода в файл. В коде замените заполнители
<mydemoserver>
,<myadmin>
,<mypassword>
, и заполнители<mydatabase>
значениями для сервера MySQL и базы данных.Протокол SSL включен по умолчанию на серверах Базы данных Azure для MySQL. Для подключения из локальной среды может потребоваться скачать SSL-сертификат DigiCertGlobalRootG2. Замените значение
ssl_ca
в коде на путь к этому файлу на компьютере.Сохраните файл в папку проекта с расширением .ру, например С:\pythonmysql\createtable.py или /home/username/pythonmysql/createtable.py.
Чтобы запустить код, откройте командную строку или оболочку
bash
и измените каталог в папке проекта, напримерcd pythonmysql
. Введите командуpython
за которой следует имя файла, напримерpython createtable.py
, и нажмите клавишу ВВОД.Примечание.
В Windows, если файл python.exe не найден, может потребоваться добавить путь Python в переменную среды PATH или указать полный путь к python.exe, например
C:\python27\python.exe createtable.py
.
Шаг 1. Создание таблицы и вставка данных
Используйте следующий код для подключения к серверу и базе данных, создания таблицы и загрузки данных с помощью инструкции SQL INSERT. Код импортирует библиотеку mysql.connector и использует следующие методы:
- connect() используется для подключения Базы данных Azure для MySQL с помощью аргументов из коллекции конфигураций;
- cursor.execute() выполняет запрос SQL к базе данных MySQL;
- cursor.close() используется при завершении работы с курсором;
- mysqli_close используется, чтобы закрыть подключение.
import mysql.connector
from mysql.connector import errorcode
# Obtain connection string information from the portal
config = {
'host':'<mydemoserver>.mysql.database.azure.com',
'user':'<myadmin>@<mydemoserver>',
'password':'<mypassword>',
'database':'<mydatabase>',
'client_flags': [mysql.connector.ClientFlag.SSL],
'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}
# 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.")
Шаг 2. Чтение данных
Используйте указанный ниже код с инструкцией SQL SELECT для подключения и чтения данных. Код импортирует библиотеку mysql.connector и использует метод 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>@<mydemoserver>',
'password':'<mypassword>',
'database':'<mydatabase>',
'client_flags': [mysql.connector.ClientFlag.SSL],
'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}
# 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.")
Шаг 3. Обновление данных
Используйте указанный ниже код с инструкцией SQL UPDATE для подключения и обновления данных. Код импортирует библиотеку mysql.connector и использует метод 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>@<mydemoserver>',
'password':'<mypassword>',
'database':'<mydatabase>',
'client_flags': [mysql.connector.ClientFlag.SSL],
'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}
# 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;", (300, "apple"))
print("Updated",cursor.rowcount,"row(s) of data.")
# Cleanup
conn.commit()
cursor.close()
conn.close()
print("Done.")
Шаг 4. Удаление данных
Используйте указанный ниже код с инструкцией SQL DELETE для подключения и удаления данных. Код импортирует библиотеку mysql.connector и использует метод 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>@<mydemoserver>',
'password':'<mypassword>',
'database':'<mydatabase>',
'client_flags': [mysql.connector.ClientFlag.SSL],
'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}
# 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.")
Очистка ресурсов
Чтобы очистить все ресурсы, используемые во время этого краткого руководства, удалите группу ресурсов с помощью следующей команды:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes