【发布时间】:2019-02-10 19:03:16
【问题描述】:
场景
我想通过从 InfluxDB 查询测量值来将数据发送到 MQTT 代理(云)。
我在名为status 的架构中有一个字段。它可以是1 或0。 status=0 表示该系列尚未发送到云端。如果我得到 MQTT 代理的确认,那么我希望使用 status=1 将查询重写回数据库。
如FAQs for InfluxDB regarding Duplicate data 中所述,如果信息与之前的查询具有相同的时间戳但具有不同的字段值 => 则将显示更新字段。
为了测试这一点,我创建了以下内容:
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客户端查询一些信息。 - 重组 JSON 以发送到云端
- 将信息发送到云端
- 如果成功,则将步骤 1. 的输出写回 DB,但使用
status=1。
我正在使用InfluxDBClient Python3 创建应用程序(MQTT + InfluxDB)
在write_points API 中有一个参数提到batch_size,需要int 作为输入。
我不确定如何将它与我想要的应用程序一起使用。有人可以指导我使用这个或数据库的架构,以便我可以将实际和非冗余信息上传到云端吗?
【问题讨论】:
标签: python-3.x influxdb influxdb-python