Module gundb.backends.pickle
Source code
from collections import defaultdict
from .backend import BackendMixin
from pickle import loads, dumps
import os
def format_object_id(schema, id):
return "{}://{}".format(schema, id)
class Pickle(BackendMixin):
def __init__(self, pickledbpath="/tmp/gundb.dat"):
self.db = defaultdict(lambda: defaultdict(lambda: defaultdict()))
self.pickledbpath = pickledbpath
self.pickledb = None
if os.path.exists(self.pickledbpath ):
with open(self.pickledbpath , "rb") as f:
self.pickledb = loads(f.read())
else:
self.pickledb = {}
def savedb(self):
with open(self.pickledbpath, "wb") as f:
f.write(dumps(self.pickledb))
def get_object_by_id(self, obj_id, schema=None):
full_id = format_object_id(schema, obj_id)
return self.pickledb.get(full_id, {'id':obj_id})
def set_object_attr(self, obj, attr, val):
obj[attr] = val
return obj
def save_object(self, obj, obj_id, schema=None):
full_id = format_object_id(schema, obj_id)
self.pickledb[full_id] = obj
self.savedb()
def __setitem__(self, k, v):
self.db[k] = v
def __getitem__(self, k):
return self.db[k]
def list(self):
return self.db.items()
Functions
def format_object_id(schema, id)
-
Source code
def format_object_id(schema, id): return "{}://{}".format(schema, id)
Classes
class Pickle (pickledbpath='/tmp/gundb.dat')
-
Source code
class Pickle(BackendMixin): def __init__(self, pickledbpath="/tmp/gundb.dat"): self.db = defaultdict(lambda: defaultdict(lambda: defaultdict())) self.pickledbpath = pickledbpath self.pickledb = None if os.path.exists(self.pickledbpath ): with open(self.pickledbpath , "rb") as f: self.pickledb = loads(f.read()) else: self.pickledb = {} def savedb(self): with open(self.pickledbpath, "wb") as f: f.write(dumps(self.pickledb)) def get_object_by_id(self, obj_id, schema=None): full_id = format_object_id(schema, obj_id) return self.pickledb.get(full_id, {'id':obj_id}) def set_object_attr(self, obj, attr, val): obj[attr] = val return obj def save_object(self, obj, obj_id, schema=None): full_id = format_object_id(schema, obj_id) self.pickledb[full_id] = obj self.savedb() def __setitem__(self, k, v): self.db[k] = v def __getitem__(self, k): return self.db[k] def list(self): return self.db.items()
Ancestors
Methods
def get_object_by_id(self, obj_id, schema=None)
-
Source code
def get_object_by_id(self, obj_id, schema=None): full_id = format_object_id(schema, obj_id) return self.pickledb.get(full_id, {'id':obj_id})
def list(self)
-
Source code
def list(self): return self.db.items()
def save_object(self, obj, obj_id, schema=None)
-
Source code
def save_object(self, obj, obj_id, schema=None): full_id = format_object_id(schema, obj_id) self.pickledb[full_id] = obj self.savedb()
def savedb(self)
-
Source code
def savedb(self): with open(self.pickledbpath, "wb") as f: f.write(dumps(self.pickledb))
def set_object_attr(self, obj, attr, val)
-
Source code
def set_object_attr(self, obj, attr, val): obj[attr] = val return obj
Inherited members