【发布时间】:2020-07-02 14:22:28
【问题描述】:
我的问题围绕连接池概念和为每个查询获取新连接的想法展开,但在 SqlAlchemy 的世界中。
我在我的代码中使用炼金术的Session。到目前为止,我在我的代码的入口点创建了一个Session 实例,并将这个实例传递到将执行实际查询的地方。但我开始看到这种方法的问题 - 特别是在处理异常时(例如回滚,只是回滚会话中的所有内容,而不仅仅是最后一个查询中具体出了什么问题)。
所以我想停止这样做,而是像这样启动一个连接池,作为我的代码的入口点,然后我将这个池传递到有查询的地方。在这样的地方,我从池中获取一个连接,做我的事情,如果出现问题,我只回滚这个特定的连接,并将其返回到池中。
我的问题是我不知道如何将所有这些与Session 概念联系起来。 alchemy 的Engine 实例是否创建/管理这样的池?我是否应该考虑创建一个新的 Session 实例作为从池中获取连接?如果是这样,我如何将Session 返回给引擎?等等。
不胜感激。
【问题讨论】:
标签: python sqlalchemy database-connection