0

我有一个使用scraperwikigem 的 Ruby 脚本。在此脚本的目录中,有一个名为scraperwiki.sqlite.

items.each do |x|
   if ScraperWiki.select("* from data where .... { x['key123']}'").empty? 
     ScraperWiki.save_sqlite(['key123'], x)
   else
    puts "Skipping already saved record " + record['key123']
   end
end

但是,当我运行它时,我得到了一个错误:

/Users/alex/.rvm/gems/ruby-2.1.2/gems/sqlite_magic-0.0.3/lib/sqlite_magic.rb:49:in `rescue in execute': no such table: data (SqliteMagic::NoSuchTable)
  from /Users/alex/.rvm/gems/ruby-2.1.2/gems/sqlite_magic-0.0.3/lib/sqlite_magic.rb:42:in `execute'
  from /Users/alex/.rvm/gems/ruby-2.1.2/gems/scraperwiki-3.0.2/lib/scraperwiki.rb:186:in `select'
4

1 回答 1

1

两件事情:

  1. swdata在您保存一些数据之前,ScraperWiki gem 不会创建数据(实际上)表
  2. 保存一些数据后,该表似乎被称为swdata,而不是data

注意swdata是默认值,但您可以将 table_name 更改为data使用参数/配置变量。

另请注意:此创建时保存(非查询时)不一定是 ScraperWiki 的 gem 的一部分,而是它依赖于https://github.com/openc/sqlite_magic的工作方式。要亲自查看,请查看https://github.com/openc/sqlite_magic/blob/master/lib/sqlite_magic.rb上的代码,看看如何#create_table只从#insert_or_update#save_data

于 2014-09-09T21:50:00.460 回答