Influxdb python API使用说明
发布日期:2021-10-03 22:59:27 浏览次数:24 分类:技术文章

本文共 3249 字,大约阅读时间需要 10 分钟。

InfluxDB官方支持的client库有Arduino, C#, Go, Java, JavaScript, PHP, Python, Ruby. 可以通过连接 获得说明。

这里介绍Python版本的使用。

1 下载安装

通过github ,

Influxdb-client-python库支持influxdb v1.8和v2.0版本,使用Flux 操作接口。

如果想使用InfluxQL操作接口,请使用influxdb-python(。 根据实际的使用经验,Flux比InfluxQL方便很多,推荐使用新版本。

下载之后,运行:

>sudo python3 setup.py install

就可以安装成功。

2 使用

首先需要打开Flux功能。

在配置文件influxdb.conf 的[http]部分,将flux-enabled 选项置为true。然后重启Influxdb数据库(sudo systemctl restart influxdb)

influxdb.conf# ...[http]  # ...  flux-enabled = true  # ...

 

2.1 写入数据库

写入数据是比较简单的,例子如下:

import codecsfrom datetime import datetimefrom influxdb_client import WritePrecision, InfluxDBClient, Pointfrom influxdb_client.client.write_api import SYNCHRONOUSbucket = "my-bucket"client = InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org")write_api = client.write_api(write_options=SYNCHRONOUS)p = Point("my_measurement").tag("location", "Prague").field("temperature", 25.3).time(datetime.now(), WritePrecision.MS)# write using point structurewrite_api.write(bucket=bucket, record=p)

 

2.2 查询数据库

查询数据有好几种方法,主要是返回的数据结构不同,分为:

Table structure,stream,  csv 和Pandas DataFrame。

from influxdb_client import InfluxDBClient, Point, Dialectfrom influxdb_client.client.write_api import SYNCHRONOUSclient = InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org")write_api = client.write_api(write_options=SYNCHRONOUS)query_api = client.query_api()"""Prepare data"""_point1 = Point("my_measurement").tag("location", "Prague").field("temperature", 25.3)_point2 = Point("my_measurement").tag("location", "New York").field("temperature", 24.3)write_api.write(bucket="my-bucket", record=[_point1, _point2])"""Query: using Table structure"""tables = query_api.query('from(bucket:"my-bucket") |> range(start: -10m)')for table in tables:    print(table)    for record in table.records:        print(record.values)print()print()"""Query: using Stream"""records = query_api.query_stream('from(bucket:"my-bucket") |> range(start: -10m)')for record in records:    print(f'Temperature in {record["location"]} is {record["_value"]}')"""Interrupt a stream after retrieve a required data"""large_stream = query_api.query_stream('from(bucket:"my-bucket") |> range(start: -100d)')for record in large_stream:    if record["location"] == "New York":        print(f'New York temperature: {record["_value"]}')        breaklarge_stream.close()print()print()"""Query: using csv library"""csv_result = query_api.query_csv('from(bucket:"my-bucket") |> range(start: -10m)',                                 dialect=Dialect(header=False, delimiter=",", comment_prefix="#", annotations=[],                                                 date_time_format="RFC3339"))for csv_line in csv_result:    if not len(csv_line) == 0:        print(f'Temperature in {csv_line[9]} is {csv_line[6]}')print()print()"""Query: using Pandas DataFrame"""data_frame = query_api.query_data_frame('from(bucket:"my-bucket") '                                        '|> range(start: -10m) '                                        '|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value") '                                        '|> keep(columns: ["location", "temperature"])')print(data_frame.to_string())"""Close client"""client.__del__()

 

转载地址:https://blog.csdn.net/lclfans1983/article/details/110382208 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Python的协程与GIL
下一篇:InfluxDB配置总结-通过配置参数和Curl命令

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年03月15日 05时02分04秒