时序库之Python操作"/>
influxdb时序库之Python操作
使用Python操作influxdb时序库
1. 安装三方库
注意区分版本,不同的 influxdb
版本对应安装不同的三方库。
influxdb V1:pip install influxdb
influxdb V2:pip install influxdb-client
以下代码都是基于 influxdb 2.4
版本进行操作。
2. 实例化client对象
from datetime import datetime
from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUStoken = "H9GXI_bvLHkbRWBR1bYZVZlm5_b282iSDU6EpfxL2tbux6Qp6jcpQqxLpp01KE6EZIdWGkpoMS_PoHe-I-jaDg=="
org = "influx_test"
bucket = "example_dbquery"# 实例化influxdb client对象,建立连接
db_client = InfluxDBClient(url="http://192.168.1.6:8086", token=token, org=org)
# 写操作
write_api = db_client.write_api(write_options=SYNCHRONOUS)
# 读操作
query_api = db_client.query_api()
3. 写操作
以 Data Point
方式写数据时,要注意 field
对应的数据类型为int
还是 double
.
# 写操作
write_api = db_client.write_api(write_options=SYNCHRONOUS)# 方式1. 行协议方式写数据
data = 'car,code=01 rate=38,temp=26'
write_api.write(bucket, org, data)# 方式2. 数据点方式写数据
point = Point("car") \.tag("code", "01") \.field("rate", 39.2).field("temp", 28.5) \.time(datetime.utcnow(), WritePrecision.NS)
write_api.write(bucket, org, point)# 方式3. 批量行协议方式写数据
sequence = ['car,code=01 rate=40,temp=25','car,code=02 rate=45,temp=30',
]
write_api.write(bucket, org, sequence)
4. 查数据
influxdb版本不同,查询语句也不一样,以下基于 influxdb 2.4
实现。
# 读操作
query_api = db_client.query_api()query_info = 'from(bucket: "example_dbquery") |> range(start: -1h)'
tables = query_api.query(query_info, org=org) # 相当于查到的所有序列,(_measurement + tag + _field 为一组series,即一组序列)for tb in tables:print(f"---------tb: {tb}")for record in tb.records: # 循环每个序列中的每条记录,即每个pointprint(record)
5. 关闭连接
db_client .close()
更多推荐
influxdb时序库之Python操作
发布评论