Hi,
I use a global session instance to work with my DB, so all module
import it and use it. But at some point I sometimes need to
reconfigure the engine to use another DB. I want to reconfigure the
existing instance so other modules can still use the same session
object to work with the DB.
can I safely change the bind attribute of an existing scoped session
or is there any things to be taken care of before I do it ? (like
closing active connections in the pool maybe ?)
I've tried to use "configure" to reset the engine, but it doesn't work
(the bind attribute remain unchanged) :
>>> from sqlalchemy.orm import scoped_session, sessionmaker
>>> from sqlalchemy import create_engine
>>> Session = scoped_session(sessionmaker())
>>> Session.configure(bind=create_engine('sqlite:///tmp/db1'))
>>> Session.bind
Engine(sqlite:///tmp/db1)
>>> Session.configure(bind=create_engine('sqlite:///tmp/db2'))
>>> Session.bind
Engine(sqlite:///tmp/db1) <--- same !
So, it this safe :
>>> from sqlalchemy.orm import scoped_session, sessionmaker
>>> from sqlalchemy import create_engine
>>> Session = scoped_session(sessionmaker())
>>> Session.configure(bind=create_engine('sqlite:///tmp/db1'))
>>> Session.bind
Engine(sqlite:///tmp/db1)
>>> Session.bind = create_engine('sqlite:///tmp/db2')
>>> Session.bind
Engine(sqlite:///tmp/db2)
Thanks
Tarek
--
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.