我正在使用Ruby mysql模块。
我想打印出查询结果并包含列名。我很难找到方法给我一些这些名字。我有如下所示的值。
result = my.query(“select * from foo”)
result.each do | row | put row.join(',')end
感谢您的帮助!
答案 0 :(得分:2)
result.fetch_fields.each_with_index do |info, i|
printf "--- Column %d (%s) ---\n", i, info.name
printf "table: %s\n", info.table
printf "def: %s\n", info.def
printf "type: %s\n", info.type
printf "length: %s\n", info.length
printf "max_length: %s\n", info.max_length
printf "flags: %s\n", info.flags
printf "decimals: %s\n", info.decimals
end
答案 1 :(得分:0)
这可能无法直接回答您的问题,但您可能会从签出数据库抽象层中受益。 Ruby中有几个,最值得注意的是ActiveRecord。 ActiveRecord作为Ruby on Rails框架的模型部分捆绑在一起,但您可以“独立”使用它而不需要其他Rails。
使用它(或类似的东西),您将能够更快速,更准确地创建应用程序,因为它提供了与数据库通信的宝贵工具 - 您将花费大量时间自己开发的工具。如果您选择将数据库供应商从MySQL更改为其他东西(例如PostgreSQL或Oracle),您将不必重新编码。
答案 2 :(得分:0)
您正在搜索的方法是 Mysql2::Result#fields
。例如:
> result = ActiveRecord::Base.connection.execute('SELECT 1 as "first_column_name", 2 as "second_column_name"')
=> #<Mysql2::Result:0x0000559c8b9d8370...
> result.fields
=> ["first_column_name", "second_column_name"]