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