Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Mysql连接,一个还是多个?_Python_Mysql - Fatal编程技术网

Python Mysql连接,一个还是多个?

Python Mysql连接,一个还是多个?,python,mysql,Python,Mysql,我正在用python编写一个脚本,它基本上查询WMI并更新mysql数据库中的信息。其中之一就是“写你需要的东西”来学习编程练习 如果脚本中有东西断开,例如,远程计算机关闭,它就被分离成函数。 查询一些WMI数据 将其更新到数据库 查询其他WMI数据 将其更新到数据库中 最好在开始时打开一个mysql连接,然后让它保持打开状态,还是在每次更新后关闭连接 似乎一个连接将使用更少的资源。(虽然我只是在学习,所以这是一个完整的猜测。)然而,在每次更新中打开和关闭连接似乎更“整洁”。函数将更加独立,而不

我正在用python编写一个脚本,它基本上查询WMI并更新mysql数据库中的信息。其中之一就是“写你需要的东西”来学习编程练习

如果脚本中有东西断开,例如,远程计算机关闭,它就被分离成函数。

查询一些WMI数据
将其更新到数据库
查询其他WMI数据
将其更新到数据库中

最好在开始时打开一个mysql连接,然后让它保持打开状态,还是在每次更新后关闭连接


似乎一个连接将使用更少的资源。(虽然我只是在学习,所以这是一个完整的猜测。)然而,在每次更新中打开和关闭连接似乎更“整洁”。函数将更加独立,而不是依赖于函数外部的代码。

我认为没有“更好”的解决方案。现在考虑资源还为时过早。而且由于wmi非常慢(与sql连接相比),所以db不是问题

让它工作吧。然后让它变得更好


在这里使用开放连接的好处是,“自然”解决方案是使用对象,而不仅仅是函数。因此,这将是一次学习体验(如果您正在学习python而不是mysql)。

请思考以下场景:

for dataItem in dataSet:
    update(dataItem)
如果在update函数中打开和关闭连接,并且数据集包含1000个项目,则会破坏应用程序的性能并破坏任何事务功能

更好的方法是打开一个连接并将其传递给update函数。您甚至可以让更新函数调用某种连接管理器。如果要定期执行单个更新,请围绕更新函数调用打开和关闭连接

通过这种方式,您将能够使用函数来封装数据操作,并能够在它们之间共享连接

但是,这种方法不适合执行批量插入或更新。

“但是,在每次更新时打开和关闭连接似乎更‘整洁’。”

这也是一个巨大的开销——而且没有实际的好处

创建和处理连接的成本相对较高。更重要的是,真正的原因是什么?它是如何改进、简化和澄清的


通常,大多数应用程序都有一个从开始到停止的连接

S.Lott和Igal Serban答案中的有用线索。我认为您应该首先了解您的实际需求和相应的代码

只是说一个不同的策略;有些应用程序保留一个数据库(或其他)连接池,如果发生事务,只需从该池中提取一个即可。很明显,这种应用程序只需要一个连接。但您仍然可以保留一个连接池并应用以下连接:

  • 每当需要数据库事务时,就会从池中提取连接,并在最后返回
  • (可选)连接在一段时间后过期(并替换为新连接)
  • (可选)连接在使用一定量后过期
  • (可选)池可以在将连接移交给程序之前检查(通过发送廉价查询)连接是否处于活动状态
这在某种程度上介于单连接和每事务连接策略之间