带有Ruby的SQLite3,无法搜索结果数组(迭代数组就好像它是一个巨大的元素)

时间:2015-03-05 04:05:04

标签: ruby parsing sqlite

我现在一直试图找到一个答案,我不确定我是否提出了错误的问题,但到目前为止我还没有运气。

我有一个通过查询SQLite表生成的数组。我也有一个从csv文件生成的数组。我试图拉出时间[0](一个id号)并检查它是否存在于SQL表的数组中

array = []
SQLite3::Database.new("t.db") do |db|
    db.execute ("SELECT t FROM ts") do |row|
        array << row
    end
end

times = CSV.read('times1.csv')

times.each do |time|
    #puts "This is the trip id: #{time[0]}"
    if array.include? time[0]
        puts time[0]
        end
end

当我这样做时,我没有得到任何结果。我知道应该有一些比赛。当我尝试迭代数组时:

array.each do |row|
    if row = 2345
         puts "Match found"
    end
end

这是一个让我很难过的奇怪部分。我知道2345只在数组中出现一次或两次,但是当我运行此代码时,似乎它为每个元素打印出“匹配找到”(比如找到“匹配找到”的5000次)。我觉得从SQLite生成的数组有问题,但我不能为我的生活搞清楚。

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

在这里:

db.execute ("SELECT t FROM ts") do |row|

您的row是一个数组,其唯一元素是您之后的t。这意味着您最终会在array中使用数组而不是数组,当然array.include? time[0]检查失败,因为array只包含其他数组。

你可能想说:

array << row[0]

收集t中的array值。