4

我一直在编写一个 Python Web 应用程序(在 Flask 中),但我不相信我完全掌握数据库访问应该如何跨多个请求/响应周期工作。在使用 Python 之前,我的 Web 编程经验是 PHP(价值几年),我担心我的 PHP 经验会误导我的一些 Python 工作。

在 PHP 中,每个新请求都会创建一个全新的数据库连接,因为请求之间不会共享任何内容。您的请求越多,您需要支持的连接就越多。但是,在 Python Web 应用程序中,请求之间存在共享状态,数据库连接可以持续存在。

所以我需要管理这些连接,并确保我关闭它们。另外,我需要某种连接池,因为如果我只有一个连接在所有请求之间共享,那么如果我没有足够的可用连接,请求可能会阻塞等待数据库访问。

这是一个正确的理解吗?还是我已经很好地识别了这些差异?在 Python Web 应用程序中,我是否需要有一个跨多个请求共享其连接的数据库连接池?池中的连接数将取决于我的应用程序的请求负载?

我正在使用 Psycopg2。

4

2 回答 2

4

你有没有研究过 SQLAlchemy?它处理了很多肮脏的细节——它维护一个连接池,并在必要时重用/关闭它们。

于 2013-06-09T17:39:04.057 回答
0

为了避免连接成本,似乎最好的方法是使用池。
直接使用docs中的 psycopg2.pool或通过更高级别的抽象层(如 SQL Alchemy),如此处注释中的下划线所示。

于 2014-08-20T10:25:46.377 回答