1 from __future__ import division
3 class SQLiteDict(object):
4 def __init__(self, db, table):
8 self._db.execute('CREATE TABLE IF NOT EXISTS %s(key BLOB PRIMARY KEY NOT NULL, value BLOB NOT NULL)' % (self._table,))
11 return self._db.execute('SELECT COUNT(key) FROM %s' % (self._table,)).fetchone()[0]
14 for row in self._db.execute('SELECT key FROM %s' % (self._table,)):
22 for row in self._db.execute('SELECT value FROM %s' % (self._table,)):
25 return list(self.itervalues)
28 for row in self._db.execute('SELECT key, value FROM %s' % (self._table,)):
29 yield (str(row[0]), str(row[1]))
31 return list(self.iteritems())
33 def __setitem__(self, key, value):
34 self._db.execute('INSERT OR REPLACE INTO %s (key, value) VALUES (?, ?)' % (self._table,), (buffer(key), buffer(value)))
36 def __getitem__(self, key):
37 row = self._db.execute('SELECT value FROM %s WHERE key=?' % (self._table,), (buffer(key),)).fetchone()
43 def __delitem__(self, key):
44 self._db.execute('DELETE FROM %s WHERE key=?' % (self._table,), (buffer(key),))