gpt4 book ai didi

python - 我应该如何在多模块 Python 应用程序中建立和管理数据库连接?

转载 作者:IT老高 更新时间:2023-10-29 00:11:40 25 4
gpt4 key购买 nike

我们有一个包含二十多个模块的 Python 应用程序,其中大部分由多个 Web 和控制台应用程序共享。

我对在多模块 Python 应用程序中建立和管理数据库连接的最佳实践从未有过清晰的了解。考虑这个例子:

我有一个为用户定义对象类的模块。它有许多用于在数据库中创建/删除/更新用户的定义。 users.py 模块被导入到 a) 基于控制台的实用程序、2) 基于 web.py 的 Web 应用程序和 3) 持续运行的守护进程。

这三个应用程序中的每一个都有不同的生命周期。守护进程可以打开连接并保持打开状态。控制台实用程序连接,确实工作,然后死亡。当然,http 请求是原子的,但是 web 服务器是一个守护进程。

我目前正在打开,使用然后关闭用户类中每个函数内的连接。这似乎是最低效的,但它适用于所有示例。另一种用作测试的方法是声明并打开整个模块的全局连接。另一种选择是在顶层应用层创建连接并在实例化类时传递引用,但这对我来说似乎是最糟糕的想法。

我知道每个应用程序架构都是不同的。我只是想知道是否有最佳做法,它会是什么?

最佳答案

最好的方法是当你需要做一些操作(比如获取和/或更新数据)时打开一个连接;操纵数据;在一次查询中将其写回数据库(对性能非常重要),然后关闭连接。打开连接是一个相当轻松的过程。

性能方面的一些缺陷包括

  • 在你肯定不会与之交互时打开数据库
  • 使用选择器获取比您需要更多的数据(例如,获取有关所有用户的数据并在 Python 中对其进行过滤,而不是让 MySQL 过滤掉无用的数据)
  • 写入未更改的值(例如,更新用户个人资料的所有值,当他们的电子邮件发生变化时)
  • 让每个字段单独更新服务器(例如,打开数据库,更新用户电子邮件,关闭数据库,打开数据库,更新用户密码,关闭数据库,打开......你明白了)

底线是,打开数据库多少次并不重要,重要的是运行多少次查询。如果您可以获得加入相关查询的代码,那么您就赢了。

关于python - 我应该如何在多模块 Python 应用程序中建立和管理数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14883346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com