Краткое руководство. Использование Python для подключения и запроса данных в База данных Azure для MySQL — гибкий сервер
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — гибкий сервер
В этом кратком руководстве вы подключаетесь к База данных Azure для MySQL гибкому серверу с помощью Python. Также вы узнаете, как использовать инструкции SQL для запроса, вставки, обновления и удаления данных в базе данных на платформах Windows, Mac и Ubuntu Linux.
В этой статье предполагается, что вы знакомы с разработкой с помощью Python, но вы не знакомы с База данных Azure для MySQL гибким сервером.
Необходимые компоненты
Учетная запись Azure с активной подпиской.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу. В настоящее время с бесплатной учетной записью Azure можно попробовать База данных Azure для MySQL — гибкий сервер бесплатно в течение 12 месяцев. Дополнительные сведения см. в разделе База данных Azure для MySQL — гибкий сервер бесплатно.
Гибкий экземпляр сервера База данных Azure для MySQL. Чтобы создать гибкий экземпляр сервера База данных Azure для MySQL, см. статью "Создание гибкого экземпляра База данных Azure для MySQL гибкого сервера с помощью портал Azure" или "Создание гибкого База данных Azure для MySQL" экземпляр сервера с помощью Azure CLI.
Подготовка клиентской рабочей станции
- Если вы создали гибкий сервер в режиме Закрытый доступ (интеграция с виртуальной сетью), к этому серверу придется подключаться с другого ресурса в той же виртуальной сети. Например, можно создать виртуальную машину и добавить ее в виртуальную сеть, созданную для гибкого сервера. См. статью "Создание гибкой виртуальной сети сервера База данных Azure для MySQL и управление ими с помощью Azure CLI".
- Если вы создали гибкий сервер в режиме Открытый доступ (разрешенные IP-адреса), вы можете добавить локальный IP-адрес в список правил брандмауэра на этом сервере. Сведения о создании и управлении База данных Azure для MySQL гибкими правилами брандмауэра сервера с помощью Azure CLI.
Установка Python и соединителя MySQL
Установите Python и соединитель MySQL для Python на компьютере с помощью приведенных ниже шагов.
Примечание.
В этом кратком руководстве при подключении к MySQL используются простые SQL-запросы. Если вы применяете веб-платформу, используйте для нее рекомендуемый соединитель, например, mysqlclient для Django.
Загрузите и установите 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
Соединитель Python для MySQL также можно установить из mysql.com. Дополнительные сведения о соединителе MySQL для Python см. в руководстве MySQL Connector/Python Developer Guide (Соединитель MySQL/Руководство разработчика Python).
Получение сведений о подключении
Получите сведения о подключении, необходимые для подключения к гибкому серверу База данных Azure для MySQL из портал Azure. Вам потребуется имя сервера, имя базы данных и учетные данные для входа.
Войдите на портал Azure.
На панели поиска на портале найдите и выберите созданный гибкий экземпляр сервера База данных Azure для MySQL, например mydemoserver.
Запишите имя сервера и имя для входа администратора сервера со страницы сервера Обзор. Если вы забыли свой пароль, можно также сбросить пароль с помощью этой страницы.
Примеры кода
Выполните приведенные ниже примеры кода Python.
Для каждого примера кода в этой статье сделайте следующее:
Создайте файл в текстовом редакторе.
Добавьте пример кода в файл. В коде замените заполнители
<mydemoserver>
,<myadmin>
,<mypassword>
, и заполнители<mydatabase>
значениями для сервера MySQL и базы данных.Сохраните файл в папку проекта с расширением .ру, например С:\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
.
Создание таблицы и вставка данных
Используйте следующий код для подключения к серверу и базе данных, создания таблицы и загрузки данных с помощью инструкции 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.")
Следующие шаги
- Зашифрованное подключение с помощью протокола TLS 1.2 на гибком сервере База данных Azure для MySQL.
- Дополнительные сведения о сети в База данных Azure для MySQL гибком сервере.
- Создание гибких правил брандмауэра сервера База данных Azure для MySQL и управление ими с помощью портал Azure.
- Создание гибкой виртуальной сети сервера База данных Azure для MySQL и управление ими с помощью портал Azure.