Краткое руководство. Использование Python для подключения и запроса данных в База данных Azure для MySQL — гибкий сервер
В этом кратком руководстве вы подключаетесь к База данных Azure для MySQL гибкому серверу с помощью Python. Также вы узнаете, как использовать инструкции SQL для запроса, вставки, обновления и удаления данных в базе данных на платформах Windows, Mac и Ubuntu Linux.
В этой статье предполагается, что у вас уже есть опыт разработки на языке Python, но вы только начали работу со службой "База данных Azure для MySQL (Гибкий сервер)".
Необходимые компоненты
- Учетная запись Azure с активной подпиской.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу. В настоящее время с бесплатной учетной записью Azure можно попробовать База данных Azure для MySQL — гибкий сервер бесплатно в течение 12 месяцев. Дополнительные сведения см. в статье "Использование бесплатной учетной записи Azure", чтобы бесплатно попробовать База данных 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 сведения, необходимые для подключения к Базе данных Azure для MySQL (Гибкий сервер). Вам потребуется имя сервера, имя базы данных и учетные данные для входа.
Войдите на портал 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.")
Связанный контент
- Подключение к базе данных Azure для MySQL — гибкому серверу с зашифрованными подключениями
- Основные понятия подключения и сети для База данных Azure для MySQL — гибкий сервер
- Управление правилами брандмауэра для База данных Azure для MySQL — гибкий сервер с помощью портал Azure
- Создание виртуальных сетей для База данных Azure для MySQL — гибкий сервер с помощью портал Azure