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

Область применения: отдельный сервер Базы данных Azure для PostgreSQL

Внимание

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

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

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

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

Также необходимо установить:

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

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

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

Примечание.

Символ @ в имени пользователя Azure Postgres URL был закодирован как %40 во всех строках соединения.

Подключение и создание таблицы

Используйте приведенный ниже код для подключения и создайте таблицу с помощью инструкции SQL CREATE TABLE. Добавьте строки в таблицу, применив инструкцию SQL INSERT INTO.

В коде используется объект PG::Connection с конструктором new для подключения к Базе данных Azure для PostgreSQL. Затем вызывает метод для выполнения команд exec() DROP, CREATE TABLE и INSERT INTO. Код проверка ошибок с помощью PG::Error класса. Затем вызывает метод close() , чтобы закрыть соединение перед завершением. Дополнительные сведения о таких классах и методах см. в справочной документации по Ruby Pg.

Замените строки host, database, user и password собственными значениями.

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

Чтение данных

Используйте указанный ниже код с инструкцией SQL SELECT для подключения и чтения данных.

В коде используется объект PG::Connection с конструктором new для подключения к Базе данных Azure для PostgreSQL. Затем он вызывает метод exec() для выполнения команды SELECT, сохраняя результаты в результирующем наборе. Для коллекции набора результатов выполняется итерация с применением цикла resultSet.each do. При этом данные строки текущего значения сохраняются в переменной row. Код проверка ошибок с помощью PG::Error класса. Затем вызывает метод close() , чтобы закрыть соединение перед завершением. Дополнительные сведения о таких классах и методах см. в справочной документации по Ruby Pg.

Замените строки host, database, user и password собственными значениями.

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

Обновление данных

Используйте указанный ниже код с инструкцией SQL UPDATE для подключения и обновления данных.

В коде используется объект PG::Connection с конструктором new для подключения к Базе данных Azure для PostgreSQL. Затем вызывает метод exec() для выполнения команды UPDATE. Код проверка ошибок с помощью PG::Error класса. Затем вызывает метод close() , чтобы закрыть соединение перед завершением. Дополнительные сведения о таких классах и методах см. в справочной документации по Ruby Pg.

Замените строки host, database, user и password собственными значениями.

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

Удаление данных

Используйте указанный ниже код с инструкцией SQL DELETE для подключения и чтения данных.

В коде используется объект PG::Connection с конструктором new для подключения к Базе данных Azure для PostgreSQL. Затем вызывает метод exec() для выполнения команды UPDATE. Код проверка ошибок с помощью PG::Error класса. Затем вызывает метод close() , чтобы закрыть соединение перед завершением.

Замените строки host, database, user и password собственными значениями.

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

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