[ZODB-Dev] Adopting ZODB

Christian Theune ct at gocept.com
Thu Jul 13 12:57:40 EDT 2006


Chris S wrote:
> On 7/13/06, Christian Theune <ct at gocept.com> wrote:
>> Chris S wrote:
>> > I'm trying to adopt some code to use ZODB as its persistence level.
>> > I've read the "Writing a Persistent Class" article
>> > 
>> (http://www.zope.org/Wikis/ZODB/FrontPage/guide/node3.html#SECTION000350000000000000000) 
>>
>> >
>> > but how do you persist a class that already inherits another class?
>> > Does ZODB work with multiple inheritence?
>>
>> Yes.
>>
>> > Also, how should I persist
>> > objects in libraries beyond my control? For example, I'd like to
>> > persist instances of pyrobot.brain.conx.Network
>> > 
>> (http://pyrorobotics.org/?page=Building_20Neural_20Networks_20using_20Conx). 
>>
>> >
>> > Is there any ability in ZODB to retroactively wrap objects in a
>> > persistence mechanism instead of having to rewrite an entire library
>> > to use the Persistent class?
>>
>> You can always persist (almost) any object, even if it does not subclass
>> from Persistent. However, any changes to the object will not be detected
>> automatically and you would have to either a) reassign the object to the
>> ZODB or b) mark it as changed using _p_changed()
>>
>> Christian
> 
> I don't think this is the case. Consider my simple example below. None
> of my classes inherit Persistent, and even though I set _p_changed =
> 1, nothing's persisted.

You're right. You have to re-assign the object to the ZODB. My fault.

Consider the other option and create a wrapper class.

Christian

-- 
gocept gmbh & co. kg - forsterstraße 29 - 06112 halle/saale - germany
www.gocept.com - ct at gocept.com - phone +49 345 122 9889 7 -
fax +49 345 122 9889 1 - zope and plone consulting and development



More information about the ZODB-Dev mailing list