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
相关产品推荐
相关产品推荐

