首页 > 解决方案 > 如何在这些情况下循环 python mysql?

问题描述

我有一个关于 python mysql 查询的问题。Heres的我的程序细节是基于mqtt和mysql数据库的。当程序订阅了带有主题的 msg,然后将插入到 mysql 数据库中。

我使用三个设备 Nodemcu 作为客户端。

订阅的每个主题的每条消息都有相同的周期。这意味着从每个客户端收到 3 次消息。我设置了每个客户端 3 次来发送消息。

所以来自客户的每条消息,我想从 1 到 3 填充 PERIOD 列

cur=db.cursor()
#create table
sql="CREATE TABLE TABEL_ALAT (ID INT AUTO_INCREMENT PRIMARY KEY, NILAI_TRUST FLOAT, NAMA_ALAT VARCHAR (10), PERIODE INT)"
cur.execute(sql)

def on_connect(client, userdata, flags, rc):
    client.subscribe("ALAT1")
    client.subscribe("ALAT2")
    client.subscribe("ALAT3")

#client1
def on_message_alat1(client, userdata, msg):
   sql="INSERT INTO TABEL_ALAT(NILAI_TRUST, NAMA_ALAT, PERIODE) VALUES (%s, %s, %s)"
   n=1
   while n < 4                                      #looping for increment to fill PERIODE column
      val = (float(msg.payload), "ALAT1", n)
      n+=1
   cur.execute(sql, val)
   db.commit()

#client2
def on_message_alat2(client, userdata, msg):
   sql="INSERT INTO TABEL_ALAT(NILAI_TRUST, NAMA_ALAT, PERIODE) VALUES (%s, %s, %s)"
   n=1
   while n < 4
      val = (float(msg.payload), "ALAT2", n)
      n+=1
   cur.execute(sql, val)
   db.commit()

#client3
def on_message_alat3(client, userdata, msg):
   sql="INSERT INTO TABEL_ALAT(NILAI_TRUST, NAMA_ALAT, PERIODE) VALUES (%s, %s, %s)"
   n=1
   while n < 4
      val = (float(msg.payload), "ALAT3", n)
      n+=1
   cur.execute(sql, val)
   db.commit()

我尝试像这样使用循环表格显示:

---------------------------------
|ID|NILAI_TRUST|NAMA_ALAT|PERIODE|
---------------------------------
|1 |   0.12    |  ALAT1  |   3  |
---------------------------------
|2 |   0.34    |  ALAT2  |   3  |
---------------------------------
|3 |   0.54    |  ALAT3  |   3  |
---------------------------------
|4 |   0.12    |  ALAT1  |   3  |
---------------------------------
|5 |   0.34    |  ALAT2  |   3  |
---------------------------------
|6 |   0.54    |  ALAT3  |   3  |
---------------------------------
|7 |   0.12    |  ALAT1  |   3  |
---------------------------------
|8 |   0.34    |  ALAT2  |   3  |
---------------------------------
|9 |   0.54    |  ALAT3  |   3  |
---------------------------------

但我预计该表将显示如下:

---------------------------------
|ID|NILAI_TRUST|NAMA_ALAT|PERIODE|
---------------------------------
|1 |   0.12    |  ALAT1  |   1  |
---------------------------------
|2 |   0.34    |  ALAT2  |   1  |
---------------------------------
|3 |   0.54    |  ALAT3  |   1  |
---------------------------------
|4 |   0.12    |  ALAT1  |   2  |
---------------------------------
|5 |   0.34    |  ALAT2  |   2  |
---------------------------------
|6 |   0.54    |  ALAT3  |   2  |
---------------------------------
|7 |   0.12    |  ALAT1  |   3  |
---------------------------------
|8 |   0.34    |  ALAT2  |   3  |
---------------------------------
|9 |   0.54    |  ALAT3  |   3  |
---------------------------------

所以我的问题是......我们可以只循环n每个函数上的变量on_message_alat还是有另一种替代方式?

因为我想在下一步处理。我需要使用列 PERIOD 来过滤 SQL 查询。

谢谢你。

标签: pythonmysqlsqlmqtt

解决方案


推荐阅读