如何解决Python Mysql-连接器哪个更好 connection.close() 或 connection.disconnect() 或 connection.shutdown()
我有一个问题,希望有人能帮助我。
为了给你一些上下文,想象一个这样的循环:
while True:
conn = mysql.connector.connect(**args) #args without specifying poolname
conn.cursor().execute(something)
conn.commit()
conn.cursor.close()
#at this point what is better:
conn.close()
#or
conn.disconnect()
#or
conn.shutdown()
在我的例子中,我使用的是 conn.close() 但是经过很长时间的执行,我的脚本总是出现错误:
mysql.connector.errors.OperationalError: 2013 (HY000): 在查询过程中失去与 MySQL 服务器的连接
显然我超过了 mysql 连接的超时时间,默认情况下是 8 小时。但是看看循环,它在每次迭代中创建和关闭新连接。我很确定游标执行不会超过一个小时。
所以问题是:close() 方法不是关闭连接吗?我应该使用 disconnect() 还是 shutdown() 代替?使用其中一种有什么区别。
我希望我已经很好地解释了自己,最好的问候!
解决方法
您的代码中可能存在问题。 通常,即使您使用循环, close() 每次都会工作。 但仍然尝试尝试和错误这三个命令,看看什么适合你的代码。
,The doc 说清楚
close() 是 disconnect() 的同义词。
对于从连接池中获取的连接,close() 不会 实际上关闭它但将它返回到池中并使其可用 用于后续连接请求
disconnect() 尝试发送 QUIT 命令并关闭套接字。它不会引发任何异常。 MySQLConnection.close() 是同义方法名,更常用。
要关闭连接而不先发送 QUIT 命令,请使用 关机()。
与 disconnect() 不同,shutdown() 关闭客户端连接而不 尝试首先向服务器发送 QUIT 命令。这样,就会 如果连接因某种原因中断,则不会阻止,例如 网络故障。
但我不明白你为什么得到Lost connection to MySQL server during query
你可以查看这个讨论Lost connection to MySQL server during query
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。