[ZODB-Dev] Schema migration, rename class
Kapil Thangavelu
hazmat at objectrealms.net
Sun Apr 4 20:22:36 EDT 2004
shane did some experiments along these lines a while ago, its old but
perhaps useful
http://cvs.sourceforge.net/viewcvs.py/zodbex/zodbex/ChangeModules/change_modules.py?rev=1.3&view=auto
-kapil
Jeremy Hylton wrote:
> On Wed, 2004-03-31 at 09:19, Syver Enstad wrote:
> > I am looking for good resources on schema migration with ZODB.
> >
> > http://www-106.ibm.com/developerworks/linux/library/l-pypers.html
> >
> > Shows some of the techniques (the article is about Pickling) The
> > article describes how to rename a class by changing the self.__class__
> > to the renamed class in __setstate__ but this doesn't seem to work.
>
> (I haven't followed the link yet, but ...) You can't change the class
> of a persistent object, although it may seem like you can because you
> can assign to __class__. The problem is that persistent references
> contain the class and oid of the object. So you can change __class__,
> but the next time the object is loaded it will get whatever class its
> referrer thinks it has.
>
> I don't know if we have a good answer for changing the class. My first
> guess is that you'd need to write a tool that scanned the entire
> database. You could either do a low-level (pickle-level) translator
> against the storage or do an application-level translator that loaded
> each object and marked it as changed if it referred to the object that
> was changing class. Neither sounds very appealing.
>
> Jeremy
>
More information about the ZODB-Dev
mailing list