Поделиться через


Краткое руководство. Подключение и запрос данных в База данных Azure для MySQL с помощью Ruby

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

Внимание

База данных Azure для MySQL один сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для MySQL гибкого сервера. Дополнительные сведения о миграции на гибкий сервер База данных Azure для MySQL см. в статье "Что происходит с одним сервером База данных Azure для MySQL?"

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

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

В качестве отправной точки в этом кратком руководстве используются ресурсы, созданные в соответствии со следующими материалами:

Внимание

Убедитесь, что IP-адрес, с которого вы подключаетесь, добавлен в правила брандмауэра на сервере через портал Azure или Azure CLI.

Установите Ruby

Установите Ruby, Gem и библиотеку MySQL2 на своем компьютере.

  1. Скачайте и установите Ruby версии 2.3.
  2. Запустите новую командную строку (cmd) из меню "Пуск".
  3. Перейдите в каталог Ruby версии 2.3. cd c:\Ruby23-x64\bin
  4. Выполните команду ruby -v, чтобы узнать установленную версию Ruby.
  5. Выполните команду gem -v, чтобы узнать установленную версию Gem.
  6. Создайте модуль Mysql2 для Ruby с помощью Gem, выполнив команду gem install mysql2.

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

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

  1. Войдите на портал Azure.
  2. В меню слева на портале Azure щелкните Все ресурсы и выполните поиск по имени созданного сервера (например, mydemoserver).
  3. Щелкните имя сервера.
  4. Запишите имя сервера и имя для входа администратора сервера с панели сервера Обзор. Если вы забыли свой пароль, можно также сбросить пароль с помощью этой панели. Имя сервера базы данных Azure для MySQL

Выполнение кода Ruby

  1. Вставьте код Ruby из раздела ниже в текстовые файлы и сохраните их в папке проекта с расширением файла .rb, например C:\rubymysql\createtable.rb или /home/username/rubymysql/createtable.rb.
  2. Чтобы выполнить код, запустите командную строку или оболочку Bash. Перейдите в папку проекта cd rubymysql.
  3. Введите команду Ruby, за которой следует имя файла, например ruby createtable.rb, чтобы запустить приложение.
  4. Если в операционной системе 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

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