예제 #1
0
    def test_cpickle_serializer(self):

        v = 'string'
        self.assertEqual(cps.loads(cps.dumps(v)), v)

        v = u'unicode'
        self.assertEqual(cps.loads(cps.dumps(v)), v)

        v = (1, 2, 3)
        self.assertEqual(cps.loads(cps.dumps(v)), v)

        v = [1, 2, 3]
        self.assertEqual(cps.loads(cps.dumps(v)), v)

        v = {'a': 1, 'b': 2, 'c': 3}
        self.assertEqual(cps.loads(cps.dumps(v)), v)
예제 #2
0
    def test_cpickle_serializer(self):
        
        v = 'string'
        self.assertEqual(cps.loads(cps.dumps(v)), v)

        v = u'unicode'
        self.assertEqual(cps.loads(cps.dumps(v)), v)

        v = (1,2,3)
        self.assertEqual(cps.loads(cps.dumps(v)), v)

        v = [1,2,3]
        self.assertEqual(cps.loads(cps.dumps(v)), v)

        v = {'a':1, 'b':2, 'c':3}
        self.assertEqual(cps.loads(cps.dumps(v)), v)
예제 #3
0
    def test_cpickle_serializer(self):
        
        from kvlite.serializers import cPickleSerializer as cps

        v = 'string'
        self.assertEqual(cps.loads(cps.dumps(v)), v)

        v = u'unicode'
        self.assertEqual(cps.loads(cps.dumps(v)), v)

        v = (1,2,3)
        self.assertEqual(cps.loads(cps.dumps(v)), v)

        v = [1,2,3]
        self.assertEqual(cps.loads(cps.dumps(v)), v)

        v = {'a':1, 'b':2, 'c':3}
        self.assertEqual(cps.loads(cps.dumps(v)), v)
예제 #4
0
class SqliteCollection(BaseCollection):
    ''' Sqlite Collection
    '''
    def get_uuid(self):
        ''' return id based on uuid 
        '''
        if not self._uuid_cache:
            for uuid in kvlite.utils.get_uuid():
                self._uuid_cache.append(uuid)
        return self._uuid_cache.pop()

    def put(self, *kv):
        ''' put document(s) in collection 
        
        kv is list of key/value
        
        put(k,v) or put([(k1,v1), (k2,v2)])
        '''
        kv_insert = list()
        if not isinstance(kv, (list, tuple)):
            raise RuntimeError(
                'key/value should be packed in the list or tuple')

        # put([(k1,v1), (k2,v2)])
        if len(kv) == 1 \
            and isinstance(kv[0], (list, tuple)):

            kv_insert = [
                self.prepare_kv(*kvs, backend='sqlite') for kvs in kv[0]
            ]

        # put(k,v)
        elif len(kv) == 2 \
            and not isinstance(kv[0], (list, tuple)) \
            and not isinstance(kv[1], (list, tuple)):

            kv_insert.append(self.prepare_kv(*kv, backend='sqlite'))

        else:
            raise RuntimeError('Incorrect format of key/values, %s' % kv)

        SQL_INSERT = 'INSERT OR REPLACE INTO %s (k,v) ' % self._collection
        SQL_INSERT += 'VALUES (?,?)'
        self._cursor.executemany(SQL_INSERT, kv_insert)

    def _get_one(self, _key):
        ''' return document by _key 
        '''
        _key = self.prepare_key(_key)
        SQL = 'SELECT k,v FROM %s WHERE k = ?;' % self._collection
        try:
            self._cursor.execute(SQL, (_key, ))
        except Exception, err:
            raise RuntimeError(err)
        result = self._cursor.fetchone()
        if result:
            try:
                if _key == self._ZEROS_KEY:
                    v = cPickleSerializer.loads(result[1])
                else:
                    v = self._serializer.loads(result[1])
            except Exception, err:
                raise RuntimeError('key %s, %s' % (_key, err))
            return (result[0], v)