Martijn Faassen wrote:
Hi there (especially Christian),
I think we can work with explicits saves. In many cases the user won't
have to worry about it anyway as the container object will do it for
them (besides making the relation), or this 'query container' we spoke
of will do it for them (but just the 'save' bit).
One point is that the scoped session approach itself doesn't work very
well for using multiple databases in the same app. We could consider
passing the session along in the containers during object graph wakling
(or traversal) so an app can easily traverse into multiple databases.
I'm not sure whether we can make the ORM do this for us though; does it
initialize the mapping with a session?
Registering a ScopedSession as a utility seems a good approach. I'm
experimenting with ways of registering engines as local utilities.
Hopefully the combination will allow something along the lines of:
>>> Session =
scoped_session(sessionmaker(bind=LookupEngine('my-engine')...))
>>> provideUtility(Session, IScopedSession, 'my-app')
>>> engine = EngineUtility(url='sqlite:///')
>>> provideUtility(engine, IConnectable, 'my-engine') # but normally a
local utility registration
The code would get a session through:
>>> Session = getUtility(IScopedSession, 'my-app')
>>> session = Session()
Mappers are registered with the metadata, so nothing special need be
done here.
Laurence
_______________________________________________
Zope-Dev maillist - [email protected]
http://mail.zope.org/mailman/listinfo/zope-dev
** No cross posts or HTML encoding! **
(Related lists -
http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope )