小编vin*_*337的帖子

使用 Flask 时 Python 中持久数据库连接的最佳实践

我的问题是关于在生产环境或其他需要考虑性能的环境中使用 Flask 时处理数据库连接的推荐方法。在 Flask 中,g 对象可用于存储事物,并且可以将打开的数据库连接放置在那里,以允许应用程序在同一请求期间的后续数据库查询中重用它们。但是,g 对象不会跨请求持续存在,因此似乎每个新请求都需要一个新的数据库连接(以及随之而来的性能损失)。

我在这件事上发现的最相关的问题是:如何在 python web 服务器中保留数据库连接,但答案只提出了连接池的抽象概念(没有将它与如何在 Flask 中使用它以及它将如何使用它联系起来)跨请求生存)或提出仅与一种特定类型的数据库或特定堆栈相关的解决方案。

所以我的问题是关于在 Flask 上构建的连接到任何类型数据库的应用程序生产时应该采取的一般方法。似乎涉及连接池的事情朝着正确的方向发展,尤其是因为它适用于传统的 Python 应用程序。但我想知道在使用 Flask 时推荐的方法是什么,因为前面提到的跨连接持久性问题,以及生产中的 Flask 应用程序从 WSGI 服务器运行的事实,这可能会增加进一步的复杂性。

编辑:基于推荐烧瓶 sqlalchemy 的评论。假设 Flask sqlalchemy 解决了这个问题,它是否也适用于 Neo4J 或 Flask 应用程序使用的任何任意数据库?许多现有的数据库连接器本身已经支持池化,那么为什么要引入一个额外的依赖项,其主要目的是提供 ORM 功能而不是连接管理?另外,sqlalchemy 如何解决跨请求持久性的基本问题?

python database database-connection pooling flask

21
推荐指数
1
解决办法
9421
查看次数

标签 统计

database ×1

database-connection ×1

flask ×1

pooling ×1

python ×1