我正在尝试使用sqlite3
gem在Ruby中读取和解析sqlite3查询。这个数据库已存在于我的机器上。
我打开数据库
db = SQLite3::Database.new "/path to/database.sqlite"
我正在执行我的特定查询
db.execute( "SELECT * FROM `ZSFNOTE` WHERE `ZTRASHED` LIKE '0'" ) do |row|
现在,基于我的(有限的)经验,我希望这可以像JSON响应一样进行解析,我可以在其中调用类似row["ZTITLE"]
的内容。但是,我的回复中没有这些标题,我只能通过猜测整数来获得我正在寻找的内容,例如row[19]
。
我知道我甚至没有抓住sqlite3
宝石的表面,但在文档中找不到答案。任何帮助将不胜感激。
答案 0 :(得分:1)
您可以使用#execute2来获取标题。
require 'sqlite3'
db = SQLite3::Database.new(':memory:')
db.execute 'CREATE TABLE "examples" ("header" varchar(20), "value" integer(8))'
db.execute 'INSERT INTO examples(header, value) VALUES("example", 1)'
db.execute2('select * from examples')
# => [["header", "value"], ["example", 1]]
您可以将标题映射到列,如下所示:
headers, *rows = db.execute2('select * from examples')
rows.map! do |row|
row.each_with_index.with_object({}) do |(col, i), o|
o[headers[i]] = col
end
end
rows.each do |row|
p row['header']
end
# => "example"