You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中SQL查询仅返回首行,需获取全部结果存入数组的问题

解决Ruby读取数据库多条数据仅返回首行的问题

我需要从数据库中读取多条测试数据,将它们存储成[{},{},{},....]这样的数组结构,但当前Ruby代码只能返回首行数据到all_test变量中。

问题代码示例

all_test=[]

test_query = "select ALL nameTest,version,start_date,TimeStamp,duration from Tests where start_date = \"#{test_date}\";"
     
all_test = @db.query(test_query).to_a[0]

pp all_test

当前输出结果

{"nameTest"=>"basicTest", "version"=>"1.1", "start_date"=>"2022-10-10", "TimeStamp"=>2022-10-10 23:12:43 +0200,"duration"=>3023}

解决方法

问题根源是to_a[0]——这个操作会把查询结果转成数组后,仅提取第一个元素(也就是首行数据)。要获取所有数据,直接去掉[0]即可:to_a本身会将所有查询结果转换为包含哈希对象的数组,完全符合你需要的[{},{},...]结构。

修正后的代码

all_test = []

test_query = "select ALL nameTest,version,start_date,TimeStamp,duration from Tests where start_date = \"#{test_date}\";"
     
# 去掉[0],直接接收所有结果转成的数组
all_test = @db.query(test_query).to_a

pp all_test

可选:手动遍历处理数据

如果需要对每条数据做额外处理,可以用循环遍历结果集:

all_test = []
result = @db.query(test_query)
result.each do |row|
  all_test << row
  # 此处可添加单条数据的自定义处理逻辑
end
pp all_test

内容的提问来源于stack exchange,提问作者Rubin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 05:45:36