次の方法で共有


クイック スタート:Ruby を使用して Azure Database for PostgreSQL - Single Server に接続してデータを照会する

適用対象: Azure Database for PostgreSQL - 単一サーバー

重要

Azure Database for PostgreSQL - シングル サーバーは廃止パスにあります。 Azure Database for PostgreSQL - フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for PostgreSQL - フレキシブル サーバーへの移行の詳細については、Azure Database for PostgreSQL 単一サーバーの現状に関するページを参照してください。

このクイックスタートでは、Ruby アプリケーションを使用して Azure Database for PostgreSQL に接続する方法を紹介します。 ここでは、SQL ステートメントを使用してデータベース内のデータを照会、挿入、更新、削除する方法を説明します。 この記事の手順では、Ruby を使用した開発には慣れているものの、Azure Database for PostgreSQL の使用は初めてであるユーザーを想定しています。

前提条件

このクイックスタートでは、次のいずれかのガイドで作成されたリソースを出発点として使用します。

また、以下のものもインストールしておく必要があります。

  • Ruby
  • Ruby pg、Ruby 用の PostgreSQL モジュール

接続情報の取得

Azure Database for PostgreSQL に接続するために必要な接続情報を取得します。 完全修飾サーバー名とログイン資格情報が必要です。

  1. Azure Portal にログインします。
  2. Azure portal の左側のメニューにある [すべてのリソース] を選択し、作成したサーバー (例: mydemoserver) を検索します。
  3. サーバー名を選択します。
  4. サーバーの [概要] パネルから、 [サーバー名][サーバー管理者ログイン名] を書き留めます。 パスワードを忘れた場合も、このパネルからパスワードをリセットすることができます。 Azure Database for PostgreSQL サーバーの名前

Note

Azure Postgres ユーザー名の @ 記号は、すべての接続文字列で %40 として URL エンコードされています。

接続とテーブルの作成

接続し、CREATE TABLE SQL ステートメントでテーブルを作成してから、INSERT INTO SQL ステートメントでそのテーブルに行を追加するには、次のコードを使用します。

このコードでは、new コンストラクターを使用した PG::Connection オブジェクトを使用して、Azure Database for PostgreSQL に接続します。 次に、exec() メソッドを呼び出して、DROP、CREATE TABLE、INSERT INTO の各コマンドを実行します。 PG::Error クラスを使用して、エラーをチェックします。 その後、close() メソッドを呼び出して、終了する前に接続を閉じます。 これらのクラスとメソッドの詳細については、Ruby Pg リファレンス ドキュメントを参照してください。

hostdatabaseuserpassword の各文字列は、実際の値に置き換えてください。

require 'pg'

begin
	# Initialize connection variables.
	host = String('mydemoserver.postgres.database.azure.com')
	database = String('postgres')
    user = String('mylogin%40mydemoserver')
	password = String('<server_admin_password>')

	# Initialize connection object.
    connection = PG::Connection.new(:host => host, :user => user, :dbname => database, :port => '5432', :password => password)
    puts 'Successfully created connection to database'

    # Drop previous table of same name if one exists
    connection.exec('DROP TABLE IF EXISTS inventory;')
    puts 'Finished dropping table (if existed).'

    # Drop previous table of same name if one exists.
    connection.exec('CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);')
    puts 'Finished creating table.'

    # Insert some data into table.
    connection.exec("INSERT INTO inventory VALUES(1, 'banana', 150)")
    connection.exec("INSERT INTO inventory VALUES(2, 'orange', 154)")
    connection.exec("INSERT INTO inventory VALUES(3, 'apple', 100)")
	puts 'Inserted 3 rows of data.'

rescue PG::Error => e
    puts e.message

ensure
    connection.close if connection
end

データの読み取り

接続し、SELECT SQL ステートメントを使用してデータを読み取るには、次のコードを使用します。

このコードでは、new コンストラクターを使用した PG::Connection オブジェクトを使用して、Azure Database for PostgreSQL に接続します。 次に、exec() メソッドを呼び出して SELECT コマンドを実行します。その際、結果は結果セットに保持されます。 結果セットのコレクションは resultSet.each do ループを使用して反復処理され、現在の行の値が row 変数に保持されます。 PG::Error クラスを使用して、エラーをチェックします。 その後、close() メソッドを呼び出して、終了する前に接続を閉じます。 これらのクラスとメソッドの詳細については、Ruby Pg リファレンス ドキュメントを参照してください。

hostdatabaseuserpassword の各文字列は、実際の値に置き換えてください。

require 'pg'

begin
	# Initialize connection variables.
	host = String('mydemoserver.postgres.database.azure.com')
	database = String('postgres')
    user = String('mylogin%40mydemoserver')
	password = String('<server_admin_password>')

	# Initialize connection object.
    connection = PG::Connection.new(:host => host, :user => user, :dbname => database, :port => '5432', :password => password)
    puts 'Successfully created connection to database.'

    resultSet = connection.exec('SELECT * from inventory;')
    resultSet.each do |row|
        puts 'Data row = (%s, %s, %s)' % [row['id'], row['name'], row['quantity']]
    end

rescue PG::Error => e
    puts e.message

ensure
    connection.close if connection
end

データの更新

接続し、UPDATE SQL ステートメントを使用してデータを更新するには、次のコードを使用します。

このコードでは、new コンストラクターを使用した PG::Connection オブジェクトを使用して、Azure Database for PostgreSQL に接続します。 次に、exec() メソッドを呼び出し、DELETE コマンドを実行します。 PG::Error クラスを使用して、エラーをチェックします。 その後、close() メソッドを呼び出して、終了する前に接続を閉じます。 これらのクラスとメソッドの詳細については、Ruby Pg リファレンス ドキュメントを参照してください。

hostdatabaseuserpassword の各文字列は、実際の値に置き換えてください。

require 'pg'

begin
	# Initialize connection variables.
	host = String('mydemoserver.postgres.database.azure.com')
	database = String('postgres')
    user = String('mylogin%40mydemoserver')
	password = String('<server_admin_password>')

	# Initialize connection object.
    connection = PG::Connection.new(:host => host, :user => user, :dbname => database, :port => '5432', :password => password)
    puts 'Successfully created connection to database.'

    # Modify some data in table.
    connection.exec('UPDATE inventory SET quantity = %d WHERE name = %s;' % [200, '\'banana\''])
    puts 'Updated 1 row of data.'

rescue PG::Error => e
    puts e.message

ensure
    connection.close if connection
end

データの削除

接続し、DELETE SQL ステートメントを使用してデータを削除するには、次のコードを使用します。

このコードでは、new コンストラクターを使用した PG::Connection オブジェクトを使用して、Azure Database for PostgreSQL に接続します。 次に、exec() メソッドを呼び出し、DELETE コマンドを実行します。 PG::Error クラスを使用して、エラーをチェックします。 その後、close() メソッドを呼び出して、終了する前に接続を閉じます。

hostdatabaseuserpassword の各文字列は、実際の値に置き換えてください。

require 'pg'

begin
	# Initialize connection variables.
	host = String('mydemoserver.postgres.database.azure.com')
	database = String('postgres')
    user = String('mylogin%40mydemoserver')
	password = String('<server_admin_password>')

	# Initialize connection object.
    connection = PG::Connection.new(:host => host, :user => user, :dbname => database, :port => '5432', :password => password)
    puts 'Successfully created connection to database.'

    # Modify some data in table.
    connection.exec('DELETE FROM inventory WHERE name = %s;' % ['\'orange\''])
    puts 'Deleted 1 row of data.'

rescue PG::Error => e
    puts e.message

ensure
    connection.close if connection
end

リソースをクリーンアップする

このクイックスタートで使用したすべてのリソースをクリーンアップするには、次のコマンドを使用してリソース グループを削除します。

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes

次のステップ