2011-10-23 3 views
0

Я уверен, что это очень просто, но я ноб для Ruby и не могу найти ответ на очень простой вопрос.Доступ к значениям массива, возвращаемым из SQL в Ruby

У меня есть таблица со списком слов в PostgreSQL. Я получаю возвращаемое значение из запроса, чтобы получить количество строк. Когда я пытаюсь назначить это возвращаемое значение переменной «wordcount», я не могу получить только целочисленное значение. Например, если я попытаюсь использовать wordcount (как получено ниже), Ruby выдает сообщение об ошибке «не может преобразовать Array в Integer (TypeError)». Короче говоря, как мне преобразовать значение, полученное из запроса, в целое? Заранее спасибо.

q = 'SELECT COUNT(*) FROM words' 
res = conn.exec(q) 
wordcount = res.values[0] 
puts wordcount 

ответ

0

Библиотека базы данных дает вам возвращаемое значение, которое поддерживает возврат нескольких строк. Вероятно, вы получаете массив с одной строкой, содержащей массив с одним столбцом, который принимает ваше значение.

1

Использование PostgreSQL (и, вероятно, большинство других разъемов), это было бы:

wordcount = res[0]["count"] 

вы уверены, что вы не хотите просто сделать:

Word.count 

хотя?

+0

Да, хорошее место - хотя я на самом деле имел в виду res [0] ["count"]. И да, это правда, но подумал, что стоит упомянуть то, что самолюбивое нобобизм OP! –

1

Метод exec возвращает экземпляр PGResult и PGResult#values:

Возвращает все кортежи как массив массивов.

Так что ваши res массив массивов: один вход для каждой строки в наборе результатов и каждая запись будет сам представляет собой массив с одной записью в столбец. Они тоже струны, попробуйте это:

wordcount = res.getvalue(0, 0).to_i 
puts wordcount 
Смежные вопросы