Ruby on rails 将哈希保存到sqlite3 ruby
我有一个小的ruby脚本,它收集数据,然后将它们保存在散列中,然后将它们存储在sqlite数据库中 散列如下所示:Ruby on rails 将哈希保存到sqlite3 ruby,ruby-on-rails,ruby,ruby-on-rails-3,sqlite,Ruby On Rails,Ruby,Ruby On Rails 3,Sqlite,我有一个小的ruby脚本,它收集数据,然后将它们保存在散列中,然后将它们存储在sqlite数据库中 散列如下所示: @track = {:name => "Chris Brown", :song => "Sweet Love", :time => "3:20", :album => "Fortune" } insert into tracks (name, song, time, album) values (Playlist, ...) 我有一个方法可以将这个散列保
@track = {:name => "Chris Brown", :song => "Sweet Love", :time => "3:20", :album => "Fortune" }
insert into tracks (name, song, time, album) values (Playlist, ...)
我有一个方法可以将这个散列保存到sqlite数据库中:
def add_db
db = SQLite3::Database.new("playlist.sqlite")
sql = "INSERT INTO tracks (name, song, time, album)" +
"VALUES(#{@track[:name]}, #{@track[:song]},#{@track[:time]}, #{@track[:album]})"
db.execute(sql)
db.close
end
但是我得到了这个错误:initialize':靠近“Playlist”:语法错误(SQLite3::SQLException)
这是将散列值保存到sqlite3中的第三种方法吗?您的问题是,您没有引用要插入的任何内容,因此SQLite最终会看到如下情况:
@track = {:name => "Chris Brown", :song => "Sweet Love", :time => "3:20", :album => "Fortune" }
insert into tracks (name, song, time, album) values (Playlist, ...)
这不是有效的SQL。您应该使用占位符:
db.execute(
'insert into tracks (name, song, time, album) values (?, ?, ?, ?)',
@track[:name], @track[:song], @track[:time], @track[:album]
)
您也可以使用ActiveRecord,但有些东西对于简单的数据导入脚本来说太重了。为什么不使用active record?@JessewLGamott我可以在ruby脚本中使用它吗,请解释更多内容并提供一个示例。您已经接受了答案,但是的,您可以。我举了一个例子@JesseWolgamott,但为了人类的利益,也许你可以发布一个答案=)