Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用这些案例在python mysql上进行循环?_Python_Mysql_Sql_Mqtt - Fatal编程技术网

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

如何使用这些案例在python mysql上进行循环?,python,mysql,sql,mqtt,Python,Mysql,Sql,Mqtt,我有一个关于python mysql查询的问题。下面是我的程序基于mqtt和mysql数据库的详细信息。当程序订阅带有主题的msg时,然后将其插入mysql数据库 我使用了三个设备Nodemcu作为客户端 订阅的每个主题的每条消息都有相同的时间段。这意味着从每个客户端收到的消息是3倍。我为每个客户端设置了3次发送消息 所以每一条来自客户机的消息,我想填充从1到3的周期列 cur=db.cursor() #create table sql="CREATE TABLE TABEL_ALAT (ID

我有一个关于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  |   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
,或者有另一种方法

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


谢谢。

您确定该表与您描述的一样,因为您的cur.execute(sql,val)不在while循环中,因此我希望每个客户机只能看到一次插入,而不是三次。很抱歉让您误解了。我使用了三个nodemcu设备作为客户端。对于每个客户端,我设置了3次发送消息和发布每个主题。所以,为什么我要做一个函数来调用每个客户端来接收消息@NBK第一条注释说明了一个很好的要点—您的
光标。execute
语句只对每个警报执行一次。
---------------------------------
|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  |
---------------------------------