如何在python-mysql上循环使用这些案例?

2024-06-26 00:05:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于python-mysql查询的问题。以下是我的程序基于mqtt和mysql数据库的详细信息。当程序用主题订阅msg时,就会插入mysql数据库。你知道吗

我使用了三个设备Nodemcu作为客户端。你知道吗

订阅的每个主题的每条消息都有相同的周期。这意味着从每个客户端接收到的消息是3倍。每个客户端我设置3次发送消息。你知道吗

所以每一条来自客户端的消息,我都要填充从1到3的周期列

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或者有其他替代方法吗?。你知道吗

因为我想在下一步处理。我需要使用列句点来过滤SQL查询。你知道吗

谢谢你。你知道吗


Tags: client客户端sqlonmsgvalcurtrust