【问题标题】:Parse mysql2 gem SELECT query解析 mysql2 gem SELECT 查询
【发布时间】:2013-09-05 02:00:25
【问题描述】:

我正在尝试使用 mysql2 gem 解析查询的一些输出。

以前,我会使用:

response = JSON.parse(response.body)
a = response.map{|s| {label: s['Category'], value: s['count'].to_i} }

现在使用 mysql2 查询:

results = db.query(sql)
results.map do |row|
  puts row
end

输出

{"Category"=>"Food", "count"=>22}
{"Category"=>"Drinks", "count"=>12}
{"Category"=>"Alcohol", "count"=>9}
{"Category"=>"Home", "count"=>7}
{"Category"=>"Work", "count"=>2}

'Category' 到 ':label' 和 'count' 到 ':value'。

results = db.query(sql)
results.map do |row|
  {label: row['Category'], value: row['count'].to_i} }
end

期望的输出

{:label=>"Food", :value=>22}
{:label=>"Drinks", :value=>12}
{:label=>"Alcohol", :value=>9}
{:label=>"Home", :value=>7}
{:label=>"Work", :value=>2}

【问题讨论】:

    标签: ruby mysql2


    【解决方案1】:

    您的代码中有两个错误:

    1) 你有两个右大括号:

                                                   #   HERE
                                                   #   | |
    results.map do |row|                           #   V V
      {label: row['Category'], value: row['count'].to_i} }
    end
    

    2) map() 返回一个数组,并且你不会将数组保存在任何地方,所以 ruby​​ 会丢弃它。

    records = results.map do |row|
      {label: row['Category'], value: row['count'].to_i }
    end
    
    p records
    

    这是证据:

    mysql> select * from party_supplies;
    +----+----------+-------+
    | id | Category | count |
    +----+----------+-------+
    |  1 | Food     |    22 |
    |  2 | Drinks   |    12 |
    +----+----------+-------+
    2 rows in set (0.00 sec)
    

    .

    require 'mysql2'
    
    client = Mysql2::Client.new(
      host: "localhost", 
      username: "root",
      database: "my_db",
    )
    
    results = client.query("SELECT * FROM party_supplies")
    
    
    records = results.map do |row|
      { label: row['Category'], value: row['count'] }
    end
    
    p records
    
    
    --output:--
    [{:label=>"Food", :value=>22}, {:label=>"Drinks", :value=>12}]
    

    请注意,您的输出表明“count”字段已经是一个 int,因此调用 to_i() 是多余的。

    【讨论】:

      猜你喜欢
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 2021-07-22
      • 2013-11-14
      • 2011-07-10
      • 2013-07-11
      • 2011-06-25
      相关资源
      最近更新 更多