2011-01-13 12 views
39

Para la vida de mí no puedo encontrar un ejemplo simple de sólo correr algo así comoejemplo simple de Postgres consulta en Ruby

"SELECT * FROM MyTable"

en Ruby. Todo lo que encuentro asume un ORM o Rails. Por ahora, no quiero ORM; No quiero Rails. Estoy buscando algo independiente que use la gema pg y ejecute una consulta simple.

+3

Gracias por hacer esta pregunta. Traté de encontrar la respuesta buscando en Google pero toda la documentación que pude encontrar aparentemente supone que ya sé cómo usar ruby-pg. – Muxecoid

Respuesta

49

De la documentación pg joya (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 

Mi siguiente pregunta sería de autenticación con una base de datos que requiere una contraseña. parece que se puede enviar una cadena de conexión de la siguiente manera:
PGconn.connect("dbname=test password=mypass") o utilizar el Constuctor con parámetros:
PGconn.new(host, port, options, tty, dbname, login, password) o utilizar un hash como :password => '...' ver here para todas las opciones disponibles.

+3

Buen ejemplo simple, gracias. Tengo experiencia con PostgreSQL a través de psql, python, Java y Perl, pero nunca había usado Ruby, y esto hizo que fuera trivial verificar que mi instalación de gemas Pg estaba bien. Apreciado. –

+0

¿Cómo imprimo este resultado en una tabla, como en la herramienta pgadmin gui? – stack1

30

Prueba esto:

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

Parece que esto usa la gema 'postgres' que ha sido reemplazada por la gema 'pg': https://rubygems.org/gems/postgres – rogerdpack

+0

¿Cómo imprimo este resultado en una tabla, como en la guia de pgadmin? herramienta? – stack1

+0

Edité la respuesta para ser un poco más claro. Obtendrá una serie de valores hash, de modo que pueda mostrarlos como desee. El ejemplo anterior imprimirá filas de "nombre de tabla | propietario". –

0

Para las versiones más recientes (por ejemplo, 0.18.3 hasta la actual versión más reciente 0.21.0) de la gema pg, en lugar de utilizar:

conn = PGconn.connect(*args) 

(las constantes PGconn, PGresult, y PGError están en desuso, y serán retira partir de la versión 1.0)

usted debe utilizar conn = PG.connect(*args), por ejemplo:.

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 

enlace Referencia: gem pg