我一直在编写一个Python Web应用程序(在Flask中),我不相信我完全掌握数据库访问应该如何在多个请求/响应周期中工作。在Python之前,我的Web编程经验是PHP(几年值得),我担心我的PHP经验会误导我的一些Python工作。
在PHP中,每个新请求都会创建一个全新的数据库连接,因为请求之间不会共享任何内容。您拥有的请求越多,您需要支持的连接就越多。但是,在Python Web应用程序中,跨请求的共享状态,数据库连接可以保持不变。
所以我需要管理这些连接,并确保关闭它们。此外,我需要有某种连接池,因为如果我只有一个连接在所有请求中共享,那么如果我没有足够的连接,请求可能会阻止等待数据库访问。
这是正确的理解吗?或者我确定了差异吗?在Python Web应用程序中,我是否需要具有跨多个请求共享其连接的数据库连接池?池中的连接数取决于我的应用程序的请求负载?
我正在使用Psycopg2。
答案 0 :(得分:4)
你有没有看过SQLAlchemy?它处理了许多脏细节 - 它维护了一个连接池,并在必要时重新使用/关闭它们。
答案 1 :(得分:0)
为了避免连接成本,似乎最好的方法是使用池 或直接使用psycopg2.pool from docs或通过更高级别的抽象层作为SQL Alchemy,在此处的注释中加下划线。