object persistency, store instances relationship externally

Larry Bates larry.bates at websafe.com`
Fri Jul 25 07:30:33 EDT 2008


King wrote:
> This is a new test for object persistency. I am trying to store the
> relationship between instances externally.
> It's not working as expected. May be I am doing it in wrong way. Any
> suggestions?
> 
> 
> import shelve
> 
> class attrib(object):
>     pass
> 
> class node(object):
>     def __init__(self):
>         self.a = attrib()
>         self.b = attrib()
>         self.c = attrib()
>         self.d = attrib()
> 
> a = node()
> #store pair relationship. This relationship is created at run time.
> lst = [[a.a, a.b], [a.c, a.d]]
> #Write objects into file
> shelf = shelve.open('shelve_test_01.txt', writeback=True)
> shelf['node'] = a
> shelf['lst'] = lst
> shelf.sync()
> shelf.close()
> 
> 
> #Read objects from file
> shelf = shelve.open('shelve_test_01.txt', 'r')
> a = shelf['node']
> lst = shelf['lst']
> print a.a, a.b, a.c, a.d
> #lst does not contains the relationship of object 'a''s attributes,
> instead it's creating new instances
> #of 'attrib' class
> print lst
> 
You may want to take a look at Zope's ZODB.

-Larry



More information about the Python-list mailing list