Как вернуть конкретное значение ключа из магазина?

У меня есть база данных psql, которая содержит hstore в качестве столбца, как таковой: column: "a" => "1", "b" => "2", "c" => "3"

В автономном скрипте ruby ​​я правильно получаю доступ к своей базе данных, но я хотел бы вывести определенное значение для "a", чтобы оно возвращало только "1". Когда я пытаюсь сделать это из цикла, вместо этого выводится "a" => "1".

require 'rubygems'
require 'pg'
require 'open-uri'
require'activerecord-postgres-hstore'

conn = PGconn.connect("hostname", 1234, '', '', "x", "y", "z")

array = conn.exec('SELECT * FROM database')

  array.each do |uri|
    puts uri['column']
  end

Документация на этой странице http://www.postgresql.org/docs/9.1/static/hstore.html показывает, что вы можете использовать hstore -> text для получения значения, но я не уверен, как это сделать в ruby.

Я также видел этот вопрос, как анализировать и отображать ключ / значение hstore в рельсах, но, как я уже сказал, вывод дает мне и ключ, и значение, когда мне нужно только значение.

Я также должен сказать, что хотя база данных была создана с использованием rails, я не хочу использовать ее для этого скрипта. Любая помощь будет оценена.

1 ответ

Решение

Если вы хотите извлечь только значения для 'a' ключи в column затем скажите точно, и пусть база данных сделает всю работу:

conn.exec(%q{SELECT column -> 'a' FROM database}).each do |_, a|
  # The value will be in `a`, `_` will be the made up column name.
end

или, если вы хотите работать с другими вещами:

conn.exec(%q{SELECT other_column, column -> 'a' as col_at_a FROM database}).each do |row|
  # Look at `row['other_column']` and `row['col_at_a']` ...
end
Другие вопросы по тегам