On Fri, Oct 28, 2016 at 3:19 AM, mike bayer <mike...@zzzcomputing.com> wrote: > > > On 10/27/2016 09:41 PM, Jonathan Vanasco wrote: >> >> I have an edge-case in a few situations where, within an @property of a >> SqlAlchemy object, I need to know the current active web-request/context. >> >> I'm currently using Pyramid's `get_current_request`, but it is no longer >> recommended -- so I'd like to get a proper solution in place. >> >> I have a new `session` per request context, so I was thinking about >> using an event to handle this concern. It looks like `before_attach` is >> only for `INSERT` type operations; is there an appropriate event that >> can adjust an object after a `SELECT`? > > > well I'd use session.info to stick the pyramid request, or some token > identifying it, in there. before_attach would get you all the persistence > and something like instanceevents.load() would get you the load. 1.1 has > all new events that clearly identify how to get every object transition into > "persistent" as well. >
I use something like this: def makesession(request): dbsession = sessionmaker() dbsession.request = request def closesession(request): dbsession.close() del dbsession.request request.add_finished_callback(closesession) return dbsession config.add_request_method(makesession, 'dbsession', reify=True) I really ought to be using session.info rather than sticking a new property directly on the session object... Simon -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.