Also, do be clear, what I have works. I'm passing the request object to the 
model and then creating the engine based on the request. It works, but I 
have a nagging feeling that this is not good and definitely not best.

On Sunday, September 4, 2016 at 10:39:55 AM UTC-4, Andrew Martin wrote:
>
> I have a question about using creating engines along with pretty much any 
> python web framework, but I'm specifically working with Pyramid. For 
> obvious reasons. :) 
>
> The sqlalchemy docs state this:
>
> "The typical usage of create_engine() 
> <http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine>
>  is 
> once per particular database URL, held globally for the lifetime of a 
> single application process. A single Engine 
> <http://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.Engine>
>  manages 
> many individual DBAPI connections on behalf of the process and is intended 
> to be called upon in a concurrent fashion. The Engine 
> <http://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.Engine>
>  is *not* synonymous to the DBAPI connect function, which represents just 
> one connection resource - the Engine 
> <http://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.Engine>
>  is 
> most efficient when created just once at the module level of an 
> application, not per-object or per-function call."
>
> But with most frameworks I've worked with--and with Pyramid 
> specifically--the best way to access the .ini settings is through the 
> request object, which means that the engine only lives for the lifetime of 
> the request? I think?
>
> I'm unsure about this.
>
> My sqlalchemy setup is a little weird (read: dumb) in the sense that I'm 
> not using the ORM layer at all. I use the engine to execute functions on a 
> postgres server which returns only a single json_aggs result. Then I either 
> make it a dict if it's going to a template or stick it as json if it's 
> going to an API that expects json. It probably sounds goofy, but it works 
> extremely well. And it's fast as hell.
>
> But I'm uncomfortable with the way I'm using engine_from_config. According 
> to the docs, I should create one and only one engine that exists for the 
> lifetime of the application. But the only reasonable way for me to access 
> the settings object is to go through a request object. And I know I must be 
> misunderstanding something here because, now that I think about it, there's 
> no effing way any web framework is reading the config from a .ini file for 
> every request. I mean, php would do that, but we are Python here.
>
> So, all that aside, what's the best way to do this?
>
> In my mind, if it's a per-request read of the settings, the it belongs 
> inside an object as part of the constructor. But if it's not, where do I 
> put it while keeping with best practices for web frameworks?
>

-- 
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.

Reply via email to