2011-01-13 24 views
39

dla życia mnie nie mogę znaleźć prosty przykład działa tylko coś jakProsty przykład PostgreSQL kwerendy w Ruby

"SELECT * FROM MyTable"

w Ruby. Wszystko, co znajduję, zakłada ORM lub Rails. Na razie nie chcę ORM; Nie chcę Railsów. Szukam czegoś niezależnego, który używa pg gem i wykonuje proste zapytanie.

+3

Dzięki za tym pytaniem. Próbowałem znaleźć odpowiedź, używając google'a, ale cała dokumentacja, którą mogłem znaleźć, zakładała, że ​​już wiem, jak używać ruby-pg. – Muxecoid

Odpowiedz

49

Z dokumentacji 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 

Moje następne pytanie będzie uwierzytelnianie z DB, która wymaga podania hasła. Wygląda można wysłać ciąg połączenia tak:
PGconn.connect("dbname=test password=mypass") lub użyj constuctor z parametrami:
PGconn.new(host, port, options, tty, dbname, login, password) lub użyć skrótu jak :password => '...' zobaczyć here dla wszystkich dostępnych opcji.

+3

Dobry prosty przykład, dzięki. Mam doświadczenie z PostgreSQL za pośrednictwem psql, python, Java i Perl, ale nigdy nie korzystałem z Ruby, a to sprawiło, że sprawdzenie, czy moja instalacja Pg gem była w porządku. Doceniony. –

+0

Jak wydrukować ten wynik w tabeli, jak to jest w narzędziu pgadmin gui? – stack1

30

Spróbuj tego:

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

Wygląda na to, że używa się klejnotu 'postgres', który został zastąpiony klejnotem 'pg': https://rubygems.org/gems/postgres – rogerdpack

+0

Jak wydrukować ten wynik w tabeli, jak to jest w pgadmin gui narzędzie ? – stack1

+0

Edytowałem odpowiedź, aby było trochę bardziej zrozumiałe. Otrzymujesz szereg skrótów, więc możesz wypisać je w dowolny sposób. Powyższy przykład wyświetli wiersze "tablename | owner". –

0

Dla nowszych wersjach (np 0.18.3 do aktualnej wersji 0.21.0) najnowszej Gem PG, zamiast przy użyciu:

conn = PGconn.connect(*args) 

(stałe PGconn, PGresult i PGError są przestarzałe i będą usunięte od wersji 1.0)

należy użyć conn = PG.connect(*args), np.

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 

LINK: gem pg