On Fri, Oct 28, 2016 at 3:19 AM, mike bayer <[email protected]> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.