Подтвердить что ты не робот

Простой пример запроса Postgres в Ruby

В жизни я не могу найти простой пример просто запустить что-то вроде

"SELECT * FROM MyTable"

в Ruby. Все, что я нахожу, предполагает ORM или Rails. Пока что я не хочу ORM; Я не хочу Rails. Я ищу что-то автономное, которое использует жемчуг pg и выполняет простой запрос.

4b9b3361

Ответ 1

Из документации pg gem (http://rubydoc.info/gems/pg/0.10.0/frames)

require 'pg'
conn = PGconn.open(:dbname => 'test')
res  = conn.exec('SELECT 1 AS a, 2 AS b, NULL AS c')
res.getvalue(0,0) # '1'
res[0]['b']       # '2'
res[0]['c']       # nil

Мой следующий вопрос - это проверка подлинности с помощью БД, для которой требуется пароль. Похоже, вы можете отправить строку подключения следующим образом:
PGconn.connect( "dbname=test password=mypass") или используйте constuctor с параметрами:
PGconn.new(host, port, options, tty, dbname, login, password) или используйте хеш, например :password => '...', см. здесь для всех доступных опций.

Ответ 2

Попробуйте следующее:

require 'pg'

conn = PGconn.connect("ip adddress", 5432, '', '', "db name", "user", "password")
res  = conn.exec('select tablename, tableowner from pg_tables')

res.each do |row|
  puts row['tablename'] + ' | ' + row['tableowner']
end

Ответ 3

Для более новых версий (например, 0.18.3 до текущей последней версии 0.21.0) из gem pg вместо использования:

conn = PGconn.connect(*args)

(Константы PGconn, PGresult и PGError являются устаревшими и будут удалено с версии 1.0.)

Вы должны использовать conn = PG.connect(*args), например:

require 'pg'

conn = PG.connect("IP-Address", 5432, '', '', "database-name", "username", "password")
res = conn.exec('select product_id, description, price from product')

res.each do |row|
    puts row
end

Ссылка ссылки: gem pg