Как вернуть конкретное значение ключа из магазина?
У меня есть база данных 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