【问题标题】:Retrieving array from MySQL从 MySQL 中检索数组
【发布时间】:2018-04-03 20:06:11
【问题描述】:

我没有使用 sqlite3 gem
我正在使用 mysql2 gem

我正在从 MySQL 数据库中检索数据,因为它满足某个 event typeseverity 的条件。但是,它只返回一行而不是结果数组。这真的让我很困惑。 .map 不应该返回一个数组吗?

   result = connect.query("SELECT * FROM data WHERE event_type = 'ALARM_OPENED' AND severity = '2'") 
    equipments = result.map do |record| 
        [
            record['sourcetime'].strftime('%H:%M:%S'), 
            record['equipment_id'], 
            record['description']
        ]
    end
    p equipments

【问题讨论】:

  • @JollyProgrammer 我使用的是 MySQL 而不是 sqlite3
  • 您使用的是 DBI 对吗?两个数据库的接口应该相同。
  • @JollyProgrammer 我不确定 DBI 是什么,但可以肯定的是,我的代码中没有使用 $db。我只是在使用 Ruby 查询 MySQL。
  • 代码中的连接对象是什么? DBI 代表 Ruby 的数据库独立接口。

标签: mysql arrays ruby


【解决方案1】:

我误读了您的问题...我认为您正在寻找的是here

更新

您可以改为使用每个,如下所示:

#!/usr/bin/env ruby
require 'mysql2'

connect= Mysql2::Client.new(:host => '', :username => '', :password => '', :database => '')

equipments = []
result = connect.query("SELECT * FROM data WHERE event_type = 'ALARM_OPENED' AND severity = '2'", :symbolize_keys => true).each do |row|
    equipments << [ 
                    row[:sourcetime].strftime('%H:%M:%S'), 
                    row[:equipment_id], 
                    row[:description] 
                  ]
end

puts "#equipments {equipments}"

已编辑:

我忘记在查询末尾添加 .each。所以它返回的是初始化的空数组。

【讨论】:

  • pluck 不是 Ruby Core,你是什么require
  • 考虑用重复的笔记替换它。
  • 我该怎么做?我是新来的:)
  • @Yunnosch 你这是什么意思?
  • @JoshuaNg 在我发表评论时,答案只是“查看其他答案”,并带有链接。这种答案是不需要的,应该用重复的标志代替。答案现在已经改变,现在似乎不仅仅包含链接,我认为它与链接的答案不同。这个答案现在可以通过它自己的内容来评估。
【解决方案2】:

你必须改变你的sql语句:

result = connect.query("SELECT * FROM data WHERE event_type = 'ALARM_OPENED' AND severity = '2'", :as => :array)

【讨论】:

  • 我收到一条错误消息:no implicit conversion of String into Integer。我尝试添加.to_s,但错误仍然存​​在
  • :as => :array 的问题在于它将每一行作为数组返回。因此,当您尝试获取诸如 record['equipment_id'] 之类的值时,它会尝试将 'equipment_id' 转换为整数并崩溃。您可以尝试在以下行之后运行原始查询:result.count 吗?
  • @JollyProgrammer 计数为 1
猜你喜欢
  • 2012-04-06
  • 2020-01-17
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2012-06-08
  • 1970-01-01
  • 2012-04-07
相关资源
最近更新 更多