我正在开发一个Flask应用程序,其中集成了MySQL(Flask mysqldb)和MQTT(Flask MQTT)。我可以用烧瓶法进行任何分贝操作(例如。
@app.route('/')
),但如果在接收到消息时尝试从MQTT方法执行此操作(例如。
@mqtt.on_message()
)它什么也做不了。最后一个方法工作得很好,因为它接收并在日志中显示接收到的消息。
我有一个执行DB操作的方法,根据我从哪里调用它,它是否工作。我想应该是因为MySQL对象,但我不太清楚。
下面是我正在使用的代码(只是问题):
@mqtt.on_message()
def handle_mqtt_message(client, userdata, message):
print('New message {}'.format(message.payload.decode()))
storeDB('test') #Here it doesn't work
################## Methods ###########################
def storeDB(param_text):
cur = mysql.connection.cursor()
cur.execute(
'INSERT INTO contacts (fullname, phone, email) VALUES (%s,%s,%s)', (param_text, param_text, param_text))
mysql.connection.commit()
###################### FLASK #########################
@app.route('/')
def index():
storeDB('temp') #Here it works
return 'Hello World'
如果我能接触到
localhost
它在浏览器中显示“Hello World”文本并更新数据库;否则,如果收到MQTT消息,它将显示在终端上,但不会更新数据库。
谢谢。