Простой пример запроса Postgres в Ruby
В жизни я не могу найти простой пример просто запустить что-то вроде
"SELECT * FROM MyTable"
в Ruby. Все, что я нахожу, предполагает ORM или Rails. Пока что я не хочу ORM; Я не хочу Rails. Я ищу что-то автономное, которое использует жемчуг pg и выполняет простой запрос.
Ответы
Ответ 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