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)
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)
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)
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)