场景
我希望通过查询来自InfluxDB的测量结果将数据发送到MQTT代理(Cloud)。
我在模式中有一个字段,称为status
。可以是1
,也可以是0
。status=0
指出,这个系列还没有发送到云端。如果我从MQTT代理获得了一个认可,那么我希望用status=1
将查询重写回数据库。
正如在关于重复数据的InfluxDB常见问题中提到的,如果信息具有与前面的查询相同的时间戳,但具有不同的字段值=>,则将显示update字段。
为了测试这一点,我创建了以下内容:
CREATE DATABASE dummy
USE dummy
INSERT meas_1, type=t1, status=0,value=123 1536157064275338300
查询:
SELECT * FROM meas_1
提供
time status type value
1536157064275338300 0 t1 234
现在,如果我想要覆盖,那么我将执行以下操作:
INSERT meas_1, type=t1, status=1,value=123 1536157064275338300
它将覆盖这个系列
time status type value
1536157064275338300 1 t1 234
(注:这是不可能通过标记目前在InfluxDB)
用法
"status"=0
使用客户端查询一些信息。status=1
。我正在使用InfluxDBClient Python3
创建应用程序(MQTT + InfluxDB)
在API接口中有一个参数,它提到了batch_size
,它需要int
作为输入。
我不知道如何在我想要的应用程序中使用这个。有人能用这个或DB的架构来指导我吗?这样我就可以将实际的和非冗余的信息上传到云端了吗?
发布于 2018-09-14 01:21:18
batch_size
实际上是需要传递给write_points
的度量列表的长度。
步骤
ResultSet
添加到列表中:
batch =list(op.get_points(全球定位系统))status
标志更改为1
。注意,InfluxDB中的默认值是浮动的。
new_mes ={“测量”:“gps”,“标签”:{ 'type':'gps‘},'time':每一个’时间‘,’字段‘:{ 'lat':float(每个’lat‘),'lon':float(每个’lon‘),'alt':float(每个’alt‘),’alt‘:float(每个’alt‘)}} updated_batch.append(new_mes)batch_size
作为updated_batch
长度的点。
client.write_points(updated_batch,batch_size=len(updated_batch))这覆盖了这个系列,因为它包含相同的时间戳,status
字段设置为1
。
https://stackoverflow.com/questions/52188429
复制相似问题