Краткое руководство. Подключение и запрос данных в База данных Azure для MySQL с помощью Ruby
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — отдельный сервер
Внимание
База данных Azure для MySQL один сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для MySQL гибкого сервера. Дополнительные сведения о миграции на гибкий сервер База данных Azure для MySQL см. в статье "Что происходит с одним сервером База данных Azure для MySQL?"
В этом кратком руководстве показано, как подключиться к База данных Azure для MySQL с помощью приложения Ruby и драгоценных камней mysql2 на платформах Windows, Linux и Mac. Здесь также показано, как использовать инструкции SQL для запроса, вставки, обновления и удаления данных в базе данных. В этой статье предполагается, что у вас уже есть опыт разработки на Ruby и вы только начали работу с базой данных Azure для MySQL.
Необходимые компоненты
В качестве отправной точки в этом кратком руководстве используются ресурсы, созданные в соответствии со следующими материалами:
- Create an Azure Database for MySQL server using Azure portal (Создание базы данных Azure для сервера MySQL с помощью портала Azure)
- Create an Azure Database for MySQL server using Azure CLI (Создание сервера базы данных Azure для MySQL с помощью Azure CLI)
Внимание
Убедитесь, что IP-адрес, с которого вы подключаетесь, добавлен в правила брандмауэра на сервере через портал Azure или Azure CLI.
Установите Ruby
Установите Ruby, Gem и библиотеку MySQL2 на своем компьютере.
- Скачайте и установите Ruby версии 2.3.
- Запустите новую командную строку (cmd) из меню "Пуск".
- Перейдите в каталог Ruby версии 2.3.
cd c:\Ruby23-x64\bin
- Выполните команду
ruby -v
, чтобы узнать установленную версию Ruby. - Выполните команду
gem -v
, чтобы узнать установленную версию Gem. - Создайте модуль Mysql2 для Ruby с помощью Gem, выполнив команду
gem install mysql2
.
Получение сведений о подключении
Получите сведения о подключении, необходимые для подключения к базе данных Azure.для MySQL. Вам потребуется полное имя сервера и учетные данные для входа.
- Войдите на портал Azure.
- В меню слева на портале Azure щелкните Все ресурсы и выполните поиск по имени созданного сервера (например, mydemoserver).
- Щелкните имя сервера.
- Запишите имя сервера и имя для входа администратора сервера с панели сервера Обзор. Если вы забыли свой пароль, можно также сбросить пароль с помощью этой панели.
Выполнение кода Ruby
- Вставьте код Ruby из раздела ниже в текстовые файлы и сохраните их в папке проекта с расширением файла .rb, например
C:\rubymysql\createtable.rb
или/home/username/rubymysql/createtable.rb
. - Чтобы выполнить код, запустите командную строку или оболочку Bash. Перейдите в папку проекта
cd rubymysql
. - Введите команду Ruby, за которой следует имя файла, например
ruby createtable.rb
, чтобы запустить приложение. - Если в операционной системе Windows приложение Ruby не указано в переменной среды PATH, может потребоваться указать полный путь, чтобы запустить приложение Node, например
"c:\Ruby23-x64\bin\ruby.exe" createtable.rb
Подключение и создание таблицы
Используйте приведенный ниже код для подключения и создайте таблицу с помощью инструкции SQL CREATE TABLE. Добавьте строки в таблицу, применив инструкцию SQL INSERT INTO.
В коде используется класс mysql2::client для подключения к серверу MySQL. Затем вызывает метод для выполнения команд query()
DROP, CREATE TABLE и INSERT INTO. После этого вызовите метод close()
, чтобы закрыть подключение перед завершением работы.
Замените строки host
, database
, username
и password
собственными значениями.
require 'mysql2'
begin
# Initialize connection variables.
host = String('mydemoserver.mysql.database.azure.com')
database = String('quickstartdb')
username = String('myadmin@mydemoserver')
password = String('yourpassword')
# Initialize connection object.
client = Mysql2::Client.new(:host => host, :username => username, :database => database, :password => password)
puts 'Successfully created connection to database.'
# Drop previous table of same name if one exists
client.query('DROP TABLE IF EXISTS inventory;')
puts 'Finished dropping table (if existed).'
# Drop previous table of same name if one exists.
client.query('CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);')
puts 'Finished creating table.'
# Insert some data into table.
client.query("INSERT INTO inventory VALUES(1, 'banana', 150)")
client.query("INSERT INTO inventory VALUES(2, 'orange', 154)")
client.query("INSERT INTO inventory VALUES(3, 'apple', 100)")
puts 'Inserted 3 rows of data.'
# Error handling
rescue Exception => e
puts e.message
# Cleanup
ensure
client.close if client
puts 'Done.'
end
Чтение данных
Используйте указанный ниже код с инструкцией SQL SELECT для подключения и чтения данных.
Код использует класс mysql2::client для подключения к База данных Azure для MySQL с new()
помощью метода. Затем вызывает метод query()
для выполнения команд SELECT. Затем вызывает метод close()
, чтобы закрыть соединение перед завершением.
Замените строки host
, database
, username
и password
собственными значениями.
require 'mysql2'
begin
# Initialize connection variables.
host = String('mydemoserver.mysql.database.azure.com')
database = String('quickstartdb')
username = String('myadmin@mydemoserver')
password = String('yourpassword')
# Initialize connection object.
client = Mysql2::Client.new(:host => host, :username => username, :database => database, :password => password)
puts 'Successfully created connection to database.'
# Read data
resultSet = client.query('SELECT * from inventory;')
resultSet.each do |row|
puts 'Data row = (%s, %s, %s)' % [row['id'], row['name'], row['quantity']]
end
puts 'Read ' + resultSet.count.to_s + ' row(s).'
# Error handling
rescue Exception => e
puts e.message
# Cleanup
ensure
client.close if client
puts 'Done.'
end
Обновление данных
Используйте указанный ниже код с инструкцией SQL UPDATE для подключения и обновления данных.
Код использует класс mysql2::client и метод .new(), чтобы подключиться к базе данных Azure для MySQL. Затем он вызывает метод query()
для выполнения команд UPDATE. Затем вызывает метод close()
, чтобы закрыть соединение перед завершением.
Замените строки host
, database
, username
и password
собственными значениями.
require 'mysql2'
begin
# Initialize connection variables.
host = String('mydemoserver.mysql.database.azure.com')
database = String('quickstartdb')
username = String('myadmin@mydemoserver')
password = String('yourpassword')
# Initialize connection object.
client = Mysql2::Client.new(:host => host, :username => username, :database => database, :password => password)
puts 'Successfully created connection to database.'
# Update data
client.query('UPDATE inventory SET quantity = %d WHERE name = %s;' % [200, '\'banana\''])
puts 'Updated 1 row of data.'
# Error handling
rescue Exception => e
puts e.message
# Cleanup
ensure
client.close if client
puts 'Done.'
end
Удаление данных
Используйте следующий код с инструкцией SQL DELETE для подключения и чтения данных.
В коде используется класс mysql2::client для подключения к серверу MySQL, запуска команды DELETE и последующего завершения подключения к серверу.
Замените строки host
, database
, username
и password
собственными значениями.
require 'mysql2'
begin
# Initialize connection variables.
host = String('mydemoserver.mysql.database.azure.com')
database = String('quickstartdb')
username = String('myadmin@mydemoserver')
password = String('yourpassword')
# Initialize connection object.
client = Mysql2::Client.new(:host => host, :username => username, :database => database, :password => password)
puts 'Successfully created connection to database.'
# Delete data
resultSet = client.query('DELETE FROM inventory WHERE name = %s;' % ['\'orange\''])
puts 'Deleted 1 row.'
# Error handling
rescue Exception => e
puts e.message
# Cleanup
ensure
client.close if client
puts 'Done.'
end
Очистка ресурсов
Чтобы очистить все ресурсы, используемые во время этого краткого руководства, удалите группу ресурсов с помощью следующей команды:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes