我正在使用带有Ruby的Mysql2 Gem,我使用
将结果转换为哈希sql = "SELECT * FROM ... WHERE ... "
results = ActiveRecord::Base.connection.execute(sql)
results.each(:as => :hash) do |row|
finalresults << row
end
但是这会以字符串作为键返回哈希值。我想要的是哈希使用符号作为键,因为我听说通常符号更有效。任何人都知道如何以有效的方式执行此操作,而不会在返回结果后涉及循环键?请注意,我的一些查询可能会生成大量数据。
所以,而不是
{'id'=>19201, 'name'=>'Foo', 'age'=>30}
我想,
{:id=>19201, :name=>'Foo', :age=>30}
提前致谢
答案 0 :(得分:2)
您可以使用Hash#with_indifferent_access
。虽然我不确定是否有办法results
无条件地自动访问,但很可能这是在引擎盖下实现的方式,因此没有性能损失。
results.each(:as => :hash) do |row|
finalresults << row.with_indifferent_access
end
答案 1 :(得分:1)
使用“symbolize_keys”标志可能会获得更好的性能。以下是文档中的示例:
client.query("SELECT * FROM users WHERE group='githubbers'", :symbolize_keys => true)