【问题标题】:Write custom timestamps to InfluxDB with Python使用 Python 将自定义时间戳写入 InfluxDB
【发布时间】:2021-10-10 11:12:39
【问题描述】:

我目前正在努力解决 Python 中 influx_client 的基本功能。我有一组时间序列数据,我想将它们添加到不同客户端的 influxdb 中。我当前的代码看起来像这样:

client = InfluxDBClient(url=f"http://{ip}:{port_db}", token=token, org=org)    
write_api = client.write_api(write_options=ASYNCHRONOUS)

p = Point("title_meas").field("column_data", value_data)
write_api.write(bucket=bucket, org=org, record=p)

现在,我为每个要用作 InfluxDB 键/时间戳的点获得了一个特定的时间戳,但无论我尝试什么 - 它都会不断添加我的主机设备的系统时间(但由于我正在处理我需要的历史数据调整时间规格)。我如何实现我的自定义时间戳,或者有没有更简单的方法,而不是使用 Point 方法逐行添加我的数据......也许像 Pandas 数据框? 感谢您的每一个建议。

【问题讨论】:

    标签: python influxdb


    【解决方案1】:

    您可以通过线路协议、Point 对象、Pandas Dataframe 或 json Dictionary 进行编写。都是可行的方法。

    如果您关心吞吐量线协议是最快的,但如果微小的速度差异并不重要,请使用您想要的任何内容。我强烈推荐阅读this。您要在流入数据点上修改的“标签”称为“_time”。

    要将其添加到点,请执行以下操作:

    p = Point("title_meas").field("column_data", value_data).time('2021-08-09T18:04:56.865943'))
    

    或json字典协议:

    p = {'measurement':'title_meas', 'time': '2021-08-09T18:04:56.865943',
     'tags':{'sometag': 'sometag'},
     'fields':{'column_data': value_data}
    }
    

    确保时间戳符合您的期望的最简单方法是使用 UTC/ISO 格式

    【讨论】: