如何在python Web服务器中保留数据库连接

Pan*_*aj 15 python mysql flask

我正在查看Flask教程,它建议为每个Web请求创建一个新的数据库连接.这是正确的做事方式吗?我一直认为数据库连接应该只为每个线程创建一次.可以这样做,同时将应用程序保持为线程安全,使用烧瓶或其他python Web服务器.

Man*_*res 13

出于学习目的,可能是的.但是在生产环境中运行的实际应用程序根本不是理想的情况.

通常,您总是希望在应用程序和数据库之间建立连接池.无论您使用何种语言/数据库,这都是一种常见的解决方案.

数据库连接池维护打开许多连接.应用程序层只接受未使用的连接,当应用程序层不再需要它们时,连接将被释放."释放"是指他们返回游泳池再次使用.

最重要的是,每个请求都不能打开/关闭连接.它们从/向数据库连接池获取/释放.

例如,使用Python和mysql可以使用PySQLPool.


Arm*_*her 9

创建一个新连接每个请求的方式去?对于大型应用程序,我们强烈建议使用SQLAlchemy(可以配置连接池),即使您对ORM不感兴趣.文档实际上有一节:http://flask.pocoo.org/docs/patterns/sqlalchemy/#sql-abstraction-layer

  • 我试图避免使用ORM路径,因为它可以直接添加一些额外的抽象层. (8认同)