Influxdb python API使用说明

InfluxDB官方支持的client库有Arduino, C#, Go, Java, JavaScript, PHP, Python, Ruby. 可以通过连接https://docs.influxdata.com/influxdb/v1.8/tools/api_client_libraries/ 获得说明。

这里介绍Python版本的使用。

1 下载安装

通过github https://github.com/influxdata/influxdb-client-python下载代码包

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

如果想使用InfluxQL操作接口,请使用influxdb-python(https://github.com/influxdata/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 codecs
from datetime import datetime

from influxdb_client import WritePrecision, InfluxDBClient, Point
from influxdb_client.client.write_api import SYNCHRONOUS

bucket = "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 structure
write_api.write(bucket=bucket, record=p)

 

2.2 查询数据库

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

Table structure,stream,  csv 和Pandas DataFrame。

from influxdb_client import InfluxDBClient, Point, Dialect
from influxdb_client.client.write_api import SYNCHRONOUS

client = 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"]}')
        break

large_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__()

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用influxdb-client库可以在Python中连接和操作InfluxDB数据库。首先,需要使用pip命令安装influxdb-client库,可以使用以下命令进行安装: ``` pip install influxdb-client ``` 然后,可以使用该库提供的InfluxDBClient类进行连接和操作。具体连接和写入数据的示例代码如下所示: ```python from datetime import datetime from influxdb_client import InfluxDBClient, Point, WritePrecision from influxdb_client.client.write_api import SYNCHRONOUS # 定义连接参数 token = "UD3qST2Zu57fMZVmxaFTIxAhp6XA_CXt7YuUyQouyYfoAJtpAkH_CzmHP6B***GY-XDAJVCthTClSLz0j2eg_Cg==" org = "xuehu96" bucket = "test" # 创建InfluxDBClient实例 with InfluxDBClient(url="http://IP:8086", token=token, org=org) as client: # 创建写入API write_api = client.write_api(write_options=SYNCHRONOUS) # 写入数据的三种方法示例 data = "mem,host=host1 used_percent=23.43234543" write_api.write(bucket, org, data) point = Point("mem") \ .tag("host", "host1") \ .field("used_percent", 24.43234543) \ .time(datetime.utcnow(), WritePrecision.NS) write_api.write(bucket, org, point) sequence = ["mem,host=host1 used_percent=25.43234543", "mem,host=host1 available_percent=15.856523"] write_api.write(bucket, org, sequence) # TODO: 在此处添加查询操作 # 关闭连接 client.close() ``` 以上代码示例了如何使用influxdb-client库连接InfluxDB数据库,并使用写入API将数据写入到指定的桶(bucket)中。可以根据需要选择适合的写入方法。在此示例中,还展示了如何关闭连接。 请注意,代码中的一些参数需要根据实际情况进行替换,比如IP、token、org和bucket等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [时序数据库influxDB(三)Python连接TSDB——influxDB2](https://blog.csdn.net/xuehu96/article/details/124036942)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [influxable:用于InfluxDB的轻量级Python ORM ODM客户端](https://download.csdn.net/download/weixin_42172204/18374224)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值