scraperwiki 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/scraperwiki.rb CHANGED
@@ -79,18 +79,22 @@ module ScraperWiki
79
79
  SQLiteMagic._do_save_sqlite(unique_keys, rjdata, table_name)
80
80
  end
81
81
 
82
+ def ScraperWiki.close_sqlite()
83
+ SQLiteMagic.close
84
+ end
85
+
82
86
  # Internal function to check a row of data, convert to right format
83
87
  def ScraperWiki._convdata(unique_keys, scraper_data)
84
88
  if unique_keys
85
89
  for key in unique_keys
86
90
  if !key.kind_of?(String) and !key.kind_of?(Symbol)
87
- return 'unique_keys must each be a string or a symbol, this one is not: ' + key
91
+ raise 'unique_keys must each be a string or a symbol, this one is not: ' + key
88
92
  end
89
93
  if !scraper_data.include?(key) and !scraper_data.include?(key.to_sym)
90
- return 'unique_keys must be a subset of data, this one is not: ' + key
94
+ raise 'unique_keys must be a subset of data, this one is not: ' + key
91
95
  end
92
96
  if scraper_data[key] == nil and scraper_data[key.to_sym] == nil
93
- return 'unique_key value should not be nil, this one is nil: ' + key
97
+ raise 'unique_key value should not be nil, this one is nil: ' + key
94
98
  end
95
99
  end
96
100
  end
@@ -11,10 +11,14 @@ require 'set'
11
11
  require 'sqlite3'
12
12
 
13
13
  module SQLiteMagic
14
- @db = SQLite3::Database.new("scraperwiki.sqlite")
14
+ @db = nil
15
15
  @sqlitesaveinfo = {}
16
16
 
17
17
  def SQLiteMagic._do_save_sqlite(unique_keys, data, swdatatblname)
18
+ if @db.nil?
19
+ @db = SQLite3::Database.new("scraperwiki.sqlite")
20
+ end
21
+
18
22
  res = { }
19
23
  if data.class == Hash
20
24
  data = [data]
@@ -58,9 +62,6 @@ module SQLiteMagic
58
62
  end
59
63
 
60
64
  lres = ssinfo.insertdata(ldata)
61
- if lres.include?('error')
62
- return lres
63
- end
64
65
  nrecords += 1
65
66
  end
66
67
 
@@ -69,13 +70,19 @@ module SQLiteMagic
69
70
  return res
70
71
  end
71
72
 
73
+ def SQLiteMagic.close()
74
+ @db.close
75
+ @db = nil
76
+ @sqlitesaveinfo = {}
77
+ end
78
+
72
79
 
73
80
  class SqliteSaveInfo
74
81
  def initialize(swdatatblname, db)
75
82
  @swdatatblname = swdatatblname
76
83
  @swdatakeys = [ ]
77
84
  @swdatatypes = [ ]
78
- @sqdatatemplate = ""
85
+ @sqdatatemplate = ""
79
86
  @db = db
80
87
  end
81
88
 
@@ -87,8 +94,6 @@ module SQLiteMagic
87
94
 
88
95
  tblinfo = @db.execute("PRAGMA main.table_info(`%s`)" % @swdatatblname)
89
96
  # puts "tblinfo="+ tblinfo.to_s
90
- # there's a bug: PRAGMA main.table_info(swdata) returns the schema for otherdatabase.swdata
91
- # following an attach otherdatabase where otherdatabase has a swdata and main does not
92
97
 
93
98
  @swdatakeys = tblinfo.map { |a| a[1] }
94
99
  @swdatatypes = tblinfo.map { |a| a[2] }
@@ -194,8 +199,9 @@ module SQLiteMagic
194
199
  end
195
200
 
196
201
  def insertdata(data)
197
- values = @swdatakeys.map { |k| data[k] } # this was data.get(k) in Python
198
- return @db.query(@sqdatatemplate, values)
202
+ values = @swdatakeys.map { |k| data[k] }
203
+ res = @db.query(@sqdatatemplate, values)
204
+ res.close
199
205
  end
200
206
  end
201
207
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scraperwiki
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: