That’s a really interesting approach, and I think I might try it.

My concern here is whether I’m using things in the appropriate way. I think I’m 
failing to understand something about the way sqlalchemy works, and that’s the 
reason I’m asking this. For myself and for posterity. :)

-andrew

> On Sep 4, 2016, at 11:22 AM, Michał Dobrzański <mike.dobrzan...@gmail.com> 
> wrote:
> 
> For Pyramid application I cache engines in global variable under connection 
> string keys. I cache engines when they're created. This way each time I need 
> to use the engine I reach to that dictionary instead of creating it with each 
> request.
> 
> On Sun, Sep 4, 2016 at 4:39 PM, Andrew Martin <agmar...@gmail.com 
> <mailto:agmar...@gmail.com>> 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 
> <mailto:sqlalchemy+unsubscr...@googlegroups.com>.
> To post to this group, send email to sqlalchemy@googlegroups.com 
> <mailto:sqlalchemy@googlegroups.com>.
> Visit this group at https://groups.google.com/group/sqlalchemy 
> <https://groups.google.com/group/sqlalchemy>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.
> 
> 
> -- 
> You received this message because you are subscribed to a topic in the Google 
> Groups "sqlalchemy" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/sqlalchemy/kD2cccX6fzY/unsubscribe 
> <https://groups.google.com/d/topic/sqlalchemy/kD2cccX6fzY/unsubscribe>.
> To unsubscribe from this group and all its topics, send an email to 
> sqlalchemy+unsubscr...@googlegroups.com 
> <mailto:sqlalchemy+unsubscr...@googlegroups.com>.
> To post to this group, send email to sqlalchemy@googlegroups.com 
> <mailto:sqlalchemy@googlegroups.com>.
> Visit this group at https://groups.google.com/group/sqlalchemy 
> <https://groups.google.com/group/sqlalchemy>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

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