Michael Mileusnich wrote: > Hello, > > I know there is documentation on this but I am still fuzzy on certain > practices when using the session. In my application I have a function > that > returns a new non scoped session. In one method (method a) I get object o > from this session. I call another method (method b) that needs to use o > and > potentially make changes to it. Is it best practice to pass the session > and > the object as a parameter to method b or should should I pass only the > object and use session = Session.object_session(o) to grab that session? > Is there some other option (like re-fetching that object every time which > is > what I am trying to avoid).
usually there's a ScopedSession per application that everyone can call upon to give the session that they want. If I had an application that had multiple session configurations, I might use decorators to reconfigure the ScopedSession global as needed, such as: @uses_session('write_master') def do_something(x, y, z, ...) @uses_session('read_slave') def do_something(q, p, r, ...) The case for object_session() is usually for ad-hoc per-object activities, like a query method on the object itself which wants to say object_session(self).query(...). The other options are passing the Session around to all functions, which could be appropriate in some cases. Calling object_session(o) on the passed object is kind of similar to that, i.e. instead of passing "o" to your functions you might pass a variable like "context" which references the Session as well as the object or objects in question for a particular operation. At least that way you give yourself room for expansion. > > -- > 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.