2011-10-23 23 views
0

我確定這很簡單,但我是Ruby的noob,似乎無法找到答案的一個非常基本的問題。訪問Ruby中的SQL返回的數組值

我有一張表格,裏面有PostgreSQL中的單詞列表。我從查詢中獲取返回值以獲得行數。當我嘗試將這個返回值賦給一個變量「wordcount」時,我似乎無法得到整數值。例如,如果我嘗試使用wordcount(如下所示),Ruby會拋出一個錯誤「無法將數組轉換爲整型(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