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 [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.