クイック スタート:Ruby を使用して Azure Database for MySQL に接続してデータを照会する
適用対象: Azure Database for MySQL - シングル サーバー
重要
Azure Database for MySQL の単一サーバーは提供終了パスにあります。 Azure Database for MySQL フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for MySQL フレキシブル サーバーへの移行の詳細については、「Azure Database for MySQL 単一サーバーの動作」を参照してください 。
このクイックスタートでは、Windows、Linux、Mac の各プラットフォームから Ruby アプリケーションと mysql2 gem を使用して Azure Database for MySQL に接続する方法を紹介します。 ここでは、SQL ステートメントを使用してデータベース内のデータを照会、挿入、更新、削除する方法を説明します。 このトピックでは、Ruby を使用した開発には慣れているものの、Azure Database for MySQL の使用は初めてであるユーザーを想定しています。
前提条件
このクイックスタートでは、次のいずれかのガイドで作成されたリソースを出発点として使用します。
- Azure Portal を使用した Azure Database for MySQL サーバーの作成
- Azure CLI を使用した Azure Database for MySQL サーバーの作成
重要
Azure portal または Azure CLI を使用して、接続元の IP アドレスにサーバーのファイアウォール規則が追加されていることを確認します。
Ruby のインストール
ご使用のコンピューターに Ruby、Gem、MySQL2 ライブラリをインストールします。
- バージョン 2.3 の Ruby をダウンロードしてインストールします。
- スタート メニューから新しいコマンド プロンプト (cmd) を起動します。
- バージョン 2.3 の Ruby ディレクトリに移動します。
cd c:\Ruby23-x64\bin
- Ruby のインストールをテストします。
ruby -v
コマンドを実行して、インストールされているバージョンを確認してください。 - Gem のインストールをテストします。
gem -v
コマンドを実行して、インストールされているバージョンを確認してください。 - コマンド
gem install mysql2
を実行し、Gem を使用して Ruby 用の Mysql2 モジュールをビルドします。
接続情報の取得
Azure Database for MySQL に接続するために必要な接続情報を取得します。 完全修飾サーバー名とログイン資格情報が必要です。
- Azure Portal にログインします。
- Azure Portal の左側のメニューにある [すべてのリソース] をクリックし、作成したサーバー (例: mydemoserver) を検索します。
- サーバー名をクリックします。
- サーバーの [概要] パネルから、 [サーバー名] と [サーバー管理者ログイン名] を書き留めます。 パスワードを忘れた場合も、このパネルからパスワードをリセットすることができます。
Ruby コードの実行
- 以下のセクションからテキスト ファイルに Ruby コードを貼り付け、.rb というファイル拡張子でプロジェクト フォルダーに保存します (例:
C:\rubymysql\createtable.rb
、/home/username/rubymysql/createtable.rb
)。 - このコードを実行するには、コマンド プロンプトまたは Bash シェルを起動します。 プロジェクト フォルダーに移動します (
cd rubymysql
)。 - そのうえで、Ruby コマンドに続けてファイル名を入力し、アプリケーションを実行します (例:
ruby createtable.rb
)。 - Windows OS で環境変数 PATH に Ruby アプリケーションが追加されていない場合、ruby アプリケーションを起動するには完全なパスを使用する必要があります (例:
"c:\Ruby23-x64\bin\ruby.exe" createtable.rb
)。
接続とテーブルの作成
接続し、CREATE TABLE SQL ステートメントでテーブルを作成してから、INSERT INTO SQL ステートメントでそのテーブルに行を追加するには、次のコードを使用します。
このコードでは、MySQL サーバーへの接続に mysql2::client クラスが使用されます。 次に、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
データの読み取り
接続し、SELECT SQL ステートメントを使用してデータを読み取るには、次のコードを使用します。
このコードでは、Azure Database for MySQL への接続に mysql2::client クラスの 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
データの更新
接続し、UPDATE SQL ステートメントを使用してデータを更新するには、次のコードを使用します。
このコードは、mysql2::client クラスの .new() メソッドを使用して Azure Database for 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
データの削除
接続し、DELETE SQL ステートメントを使用してデータを読み取るには、次のコードを使用します。
このコードでは、MySQL サーバーに接続し、DELETE コマンドを実行してからサーバーへの接続を閉じるのに、mysql2::client クラスが使用されます。
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