2011-01-13 2 views
39

Для жизни меня я не могу найти простой пример просто работает что-то вродеПростой пример Postgres запроса в Рубине

"SELECT * FROM MyTable"

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

+3

Спасибо за этот вопрос. Я попытался найти ответ по googling, но вся документация, которую я мог найти, по-видимому, предполагает, что я уже знаю, как использовать ruby-pg. – Muxecoid

ответ

49

Из документации пг гем (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 => '...' см here для всех доступных опций.

+3

Хороший простой пример, спасибо. Я имею опыт работы с PostgreSQL через psql, python, Java и Perl, но никогда не использовал Ruby, и это сделало тривиальным, чтобы проверить, что моя установка Pg gem была в порядке. Оценил. –

+0

Как напечатать этот результат в таблице, как в инструменте pgadmin gui? – stack1

30

Попробуйте это:

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 
+1

Похоже, что используется камень «postgres», который был заменен камнем «pg»: https://rubygems.org/gems/postgres – rogerdpack

+0

Как распечатать этот результат в таблице, как это происходит в pgadmin gui инструмент ? – stack1

+0

Я отредактировал ответ, чтобы быть немного более ясным. Вы получаете массив хешей назад, так что вы можете выводить его так, как вам нравится. В приведенном выше примере будут напечатаны строки «tablename | owner». –

0

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

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

Смежные вопросы