I had originally tried the expunge method, as in the code I had attached,
but if I just use session.save(policy), I get the aforementioned exception,
and if I use session.save_or_update(policy) it simply does nothing.
When using session.merge(policy), I get the following exception:
File "build\bdist.win32\egg\sqlalchemy\orm\session.py", line 483,
in merge
NameError: global name 'mapperutil' is not defined
Regarding the eager-loading, I understand that the configuration of the
mappers will be in effect. I meant to inquire as to whether there was a way
to recursively override the mappers, as this is a different use than the ORM
was originally intended for, and the usual behavior of lazy-loading is not
desired here. I considered using the eagerload option, but my ORM has
several levels (eg, Policy contains Insureds which each contain Addresses)
and it didn't seem like the option would apply all the way down.
-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED]
Behalf Of Michael Bayer
Sent: Saturday, September 22, 2007 11:11 AM
To: [email protected]
Subject: [sqlalchemy] Re: Multiple database connections - Using ORM to
copy table data from one DB to another
On Sep 18, 2007, at 5:47 PM, Cory Johns wrote:
> I'm trying to make a small utility that uses a larger application's
> ORM to
> copy an object from one database (dev) to another (qa) for testing
> purposes.
> But I'm running in to trouble getting SQLAlchemy to use the multiple
> database connections. I can get the object to load, and then open a
> connection to the other database, but when I try to call save, I
> get the
> following error:
>
> sqlalchemy.exceptions.InvalidRequestError: Instance
> '<thig.base.model.policy.Policy object at 0x018C5AB0>' is a detached
> instance or is already persistent in a different Session
>
> Is it possible to re-attach an ORM instance to a new session in
> order to
> duplicate the data to another database like I'm doing? If so, how
> do I go
> about that?
use session.merge() is probably the most straightforward way (returns
a second object instance associated with the new session). or, you
can expunge() the object from the first session, then save_or_update
() to the second session.
>
> Additionally, as I suspect this will be a problem once I get it re-
> attached,
> is there an easy way to specify that all properties, recursively,
> should be
> eager loaded?
whatever the configuration is of the mappers() representing the
involved classes will remain in effect.
CONFIDENTIAL NOTICE: This email including any attachments, contains
confidential information belonging to the sender. It may also be
privileged or otherwise protected by work product immunity or other
legal rules. This information is intended only for the use of the
individual or entity named above. If you are not the intended
recipient, you are hereby notified that any disclosure, copying,
distribution or the taking of any action in reliance on the contents
of this emailed information is strictly prohibited. If you have
received this email in error, please immediately notify us by
reply email of the error and then delete this email immediately.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---