MQTT是一種輕量級的消息傳輸協議,它通常用于連接物聯網設備和云平臺。而MySQL是一種流行的關系數據庫管理系統,用于存儲并管理數據。這篇文章將介紹如何使用MQTT連接MySQL。
首先,我們需要使用MQTT客戶端庫連接MQTT代理服務器。以下是Python代碼示例:
import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client.subscribe("topic/#") def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload)) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("broker.hivemq.com", 1883, 60) client.loop_forever()
上面的代碼使用HiveMQ代理服務器連接MQTT。我們定義了兩個回調函數來處理MQTT連接和收到的消息。接下來,我們需要安裝PyMySQL庫用于連接MySQL:
!pip install PyMySQL
然后,我們可以將MySQL連接信息添加到Python代碼中:
import pymysql db = pymysql.connect(host="localhost", user="root", passwd="password", db="mydatabase") cursor = db.cursor() cursor.execute("SELECT * FROM mytable") data = cursor.fetchall() for row in data: print(row) db.close()
上面的代碼使用數據庫中的SELECT語句從mytable獲取所有數據,并遍歷打印每一行。現在我們可以將MQTT和MySQL連接在一起,將收到的MQTT消息存儲到MySQL數據庫中:
import paho.mqtt.client as mqtt import pymysql db = pymysql.connect(host="localhost", user="root", passwd="password", db="mydatabase") def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client.subscribe("topic/#") def on_message(client, userdata, msg): payload = msg.payload.decode("utf-8") cursor = db.cursor() sql = "INSERT INTO mytable (message) VALUES ('{}')".format(payload) try: cursor.execute(sql) db.commit() print("Inserted message into MySQL: " + payload) except: db.rollback() client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("broker.hivemq.com", 1883, 60) client.loop_forever() db.close()
上面的代碼定義了一個on_message回調函數來處理從MQTT接收到的消息。它將消息轉換為字符串并將其插入到MySQL數據庫mytable的message列中。如果插入成功,則打印確認消息。
到此,我們已經成功連接了MQTT和MySQL。我們可以使用相同的方法從MQTT接收消息并將它們存儲到數據庫中。
上一篇css三角形下拉選擇