MQTT和MySQL都是非常常見的技術,但它們的關系并不明顯。MQTT是一種輕量級的消息傳遞協(xié)議,通常用于物聯(lián)網(wǎng)設備之間的數(shù)據(jù)傳輸。而MySQL則是一個關系型數(shù)據(jù)庫管理系統(tǒng),常用于存儲大量有結構的數(shù)據(jù)。
盡管這兩個技術的用途看起來有些不同,但它們確實可以結合使用,特別是在物聯(lián)網(wǎng)應用中。當設備之間需要傳遞數(shù)據(jù)時,MQTT協(xié)議可以方便地傳遞不同類型的消息。然后,通過將接收到的數(shù)據(jù)存儲到MySQL數(shù)據(jù)庫中來使它們能夠長期保存、查詢和分析。
//mqtt消息訂閱與傳遞 import paho.mqtt.client as mqtt HOST = "localhost" PORT = 1883 TOPIC = "sensor/data" def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client.subscribe(TOPIC) def on_message(client, userdata, msg): data = msg.payload.decode() print("Received data: " + data) #將數(shù)據(jù)存儲到MySQL數(shù)據(jù)庫 import mysql.connector mydb = mysql.connector.connect( host="localhost", user="username", password="password", database="mydatabase" ) cursor = mydb.cursor() sql = "INSERT INTO sensor_data(value) VALUES (%s)" val = (data,) cursor.execute(sql, val) mydb.commit() print(cursor.rowcount, "records inserted.") client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect(HOST, PORT, 60) client.loop_forever()
上述代碼演示了如何使用MQTT協(xié)議訂閱傳感器設備的數(shù)據(jù),并將其存儲到MySQL數(shù)據(jù)庫中。該程序中,MQTT客戶端訂閱了名為“sensor/data”的主題,然后將收到的數(shù)據(jù)存儲到包含一個名為“sensor_data”的表的MySQL數(shù)據(jù)庫中。最終,這些數(shù)據(jù)可以通過查詢數(shù)據(jù)庫來分析和可視化。