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 for row in self._db.execute('SELECT COUNT(key) FROM %s' % (self._table,)):
15 for row in self._db.execute('SELECT key FROM %s' % (self._table,)):
23 for row in self._db.execute('SELECT value FROM %s' % (self._table,)):
26 return list(self.itervalues)
29 for row in self._db.execute('SELECT key, value FROM %s' % (self._table,)):
30 yield (str(row[0]), str(row[1]))
32 return list(self.iteritems())
34 def __setitem__(self, key, value):
35 if self._db.execute('SELECT key FROM %s where key=?' % (self._table,), (buffer(key),)).fetchone() is None:
36 self._db.execute('INSERT INTO %s (key, value) VALUES (?, ?)' % (self._table,), (buffer(key), buffer(value)))
38 self._db.execute('UPDATE %s SET value=? WHERE key=?' % (self._table,), (buffer(value), buffer(key)))
40 def __getitem__(self, key):
41 row = self._db.execute('SELECT value FROM %s WHERE key=?' % (self._table,), (buffer(key),)).fetchone()
47 def __delitem__(self, key):
48 self._db.execute('DELETE FROM %s WHERE key=?' % (self._table,), (buffer(key),))