MySQL,我应该保持连接还是在需要时连接?

2024-10-05 14:27:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在用MySQL数据库记录家中的温度(每5分钟读取10个传感器),并且一直在使用Python,但是我想知道一些事情。。。在

目前,当我第一次运行我的程序时,我运行普通的connecttomysql,它只运行一次。在

db = MySQLdb.connect(mysql_server, mysql_username, mysql_passwd, mysql_db)
cursor = db.cursor()

然后我收集数据并成功地发布到数据库中。然后脚本休眠5分钟,然后再次启动并再次收集和发布数据,依此类推。但是,我只连接一次,从不断开;它只是在循环中继续运行。我只有在终止程序时才断开连接。在

这是最佳实践吗?也就是说,始终保持与MySQL服务器的连接处于打开状态,还是应该在完成插入/提交之后断开连接?在

我问这个问题的原因是:时不时地,我必须重新启动脚本,因为可能我的MySQL服务器已经离线或者其他问题。我应该:

  • 继续做我正在做的事情,只需通过重新连接来处理任何MySQL数据库断开连接
  • 把它放到crontab中,每五分钟收集一次数据,并且没有循环和睡眠,或者
  • 还有别的事吗?在

Tags: 数据程序服务器脚本数据库db记录mysql
1条回答
网友
1楼 · 发布于 2024-10-05 14:27:25

MySQL服务器配置为处理固定数量的有限连接。这不是一个好的做法,捆绑一个连接,你不经常使用。因此,通常情况下,您应该在完成连接后立即关闭连接,只有在再次需要时才重新连接。MySQLdb的连接是上下文管理器,因此可以使用with-statement语法自动关闭连接。在

connection = MySQLdb.connect(
    host=config.HOST, user=config.USER,
    passwd=config.PASS, db=config.MYDB, )
with connection as cursor:
    print(cursor)
    # the connection is closed for you automatically 
    # when Python leaves the `with-suite`.

为了保证健壮性,您可能需要使用try..,除非在第一次运行时,connect无法建立连接。在

话虽如此,我还是把它放在crontab条目中,不用睡觉了。在

相关问题 更多 >