mirror of https://github.com/scrapy/scrapy.git
Fixed bugs with SQLiteDict and added tests
This commit is contained in:
parent
7da79b90fe
commit
cb7cc7c8bb
|
|
@ -20,6 +20,24 @@ class SqliteDictTest(unittest.TestCase):
|
|||
d.clear()
|
||||
self.failIf(d.items())
|
||||
|
||||
def test_in(self):
|
||||
d = self.dict_class()
|
||||
self.assertFalse('test' in d)
|
||||
d['test'] = 123
|
||||
self.assertTrue('test' in d)
|
||||
|
||||
def test_keyerror(self):
|
||||
d = self.dict_class()
|
||||
self.assertRaises(KeyError, d.__getitem__, 'test')
|
||||
|
||||
def test_replace(self):
|
||||
d = self.dict_class()
|
||||
self.assertEqual(d.get('test'), None)
|
||||
d['test'] = 123
|
||||
self.assertEqual(d.get('test'), 123)
|
||||
d['test'] = 456
|
||||
self.assertEqual(d.get('test'), 456)
|
||||
|
||||
|
||||
class JsonSqliteDictTest(SqliteDictTest):
|
||||
|
||||
|
|
|
|||
|
|
@ -19,12 +19,14 @@ class SqliteDict(DictMixin):
|
|||
def __getitem__(self, key):
|
||||
key = self.encode(key)
|
||||
q = "select value from %s where key=?" % self.table
|
||||
value = self.conn.execute(q, (key,)).fetchone()[0]
|
||||
return self.decode(value)
|
||||
value = self.conn.execute(q, (key,)).fetchone()
|
||||
if value:
|
||||
return self.decode(value[0])
|
||||
raise KeyError(key)
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
key, value = self.encode(key), self.encode(value)
|
||||
q = "insert into %s (key, value) values (?,?)" % self.table
|
||||
q = "insert or replace into %s (key, value) values (?,?)" % self.table
|
||||
self.conn.execute(q, (key, value))
|
||||
self.conn.commit()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue