我使用python订阅一个主题,解析json并将它们存储在数据库中。我有问题,失去与mysql的连接,因为它不能打开太久。我收到的信息如下
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
我设法通过增加超时来删除它,但这不是一个好的解决方案,因为我不知道系统需要等待消息多长时间。有没有可能我只能在收到消息时创建连接?
我试图将连接详细信息添加到on消息中,然后关闭它,但仍然存在相同的问题
def on_message(client, userdata, msg):
sql=“”insert into data(something)values(%s)“”data=(“something value”)with db:try:cursor.execute(sql,data)except mysqldb.error:db.ping(true)cursor.execute(sql,data)except:print(“error”)print(cursor.\u last executed)
但是这个变量在这个函数之外是不可见的。这方面的最佳做法是什么。
建立连接的代码部分如下
import paho.mqtt.client as mqtt
import MySQLdb
import json
import time
# mysql config
try:
db = MySQLdb.connect(host="localhost", # your host
user="admin", # username
passwd="somepass", # password
db="mydb") # name of the database
except:
print("error")
如您所见,我已经在begging创建了一个到mysql的连接,如果在指定的超时时间内没有消息,我的脚本将停止工作。
1条答案
按热度按时间pxyaymoc1#
尝试: