Beispiel #1
0
class AnguisSqlite(AnguisBase):
    def __init__(self, path):
        self.sd = SqliteDict(path, autocommit=True)

    def __del__(self):
        super(AnguisSqlite, self).__del__()

    def __getitem__(self, key):
        return self.unserialize(self.sd.__getitem__(key))

    def __setitem__(self, key, obj):
        self.sd.__setitem__(key, self.serialize(obj))

    def __delitem__(self, key):
        self.sd.__delitem__(key)

    def __iter__(self):
        return self.sd.__iter__()

    def __len__(self):
        return len(self.sd)
Beispiel #2
0
class Cache(object):
    def __init__(self, **kwargs):
        self.name = kwargs.get('name', DEFAULT_DATABASE_NAME)
        self._db = SqliteDict('./%s.sqlite' % self.name,
                              encode=cache_encode,
                              decode=cache_decode,
                              autocommit=True)
        logger.info('name=%s size=%s', self.name, len(self._db))

    def close(self):
        self._db.close()

    def __del__(self):
        pass  # self.close()

    def __iter__(self):
        return self._db.__iter__()

    def iteritems(self):
        return self._db.iteritems()

    def iterkeys(self):
        return self._db.iterkeys()

    def itervalues(self):
        return self._db.itervalues()

    def items(self):
        return self.iteritems()

    def __getitem__(self, key):
        return self._db.__getitem__(key)

    def get(self, key, default=None):
        try:
            return self.__getitem__(key)
        except KeyError:
            return default

    def __setitem__(self, key, value):
        return self._db.__setitem__(key, value)

    def set(self, key, value):
        return self.__setitem__(key, value)

    def __len__(self):
        return len(self._db)

    def __contains__(self, key):
        return key in self._db

    def __delitem__(self, key):
        if key in self._db:
            del self._db[key]

    def list(self, limit=None):
        logger.info('list')
        keys = []
        for key in self:
            keys.append(key)
            if limit is not None and len(keys) == limit: break
        return keys