On Oct 16, 2010, at 1:02 PM, Michael Hipp wrote: > On 8/24/2010 9:47 PM, Michael Bayer wrote: >> Michael Hipp wrote: >>> How do I make a copy of an orm object such that modifications to the >>> copy do not affect the original? >> >> The mapped object has a member "_sa_instance_state" that you basically >> don't want to transfer to your new object. You want it to have its own >> "_sa_instance_state" and this comes from calling the plain constructor, >> which the "copy" module, if that's what you're using, does not use. You >> also want to set attributes normally, not populating __dict__ directly. >> So just basically don't use the "copy" module. >> >> x = MyObject() >> for a in dir(myoldobject): >> if not a.startswith('_'): >> setattr(x, a, getattr(myoldobject, a)) > > Resurrecting an old thread ... > > I'm just now getting around to try this but I'm finding out it doesn't really > work like I'd hoped. > > As soon as 'getattr' hits a column with a ForeignKey it immediately tries to > autoflush INSERT 'x'. But 'x' is only half-baked and not ready to be saved. > > In fact, I don't ever want to save 'x', and I especially don't want to INSERT > it. It would be a duplicate of 'myoldobject'. > > Is there a way to copy an orm object and tell it "don't ever save this I just > want to keep it around to look at"? > > Alternatively I can just copy all the attributes to a dict(), but that's a > bit messy.
dont put it in the Session. > > Thanks for all your help, > Michael > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalch...@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.