influxdb时序库之Python操作

使用Python操作influxdb时序库

1. 安装三方库

注意区分版本,不同的 influxdb 版本对应安装不同的三方库。

influxdb V1:pip install influxdb

influxdb V2:pip install influxdb-client

以下代码都是基于 influxdb 2.4 版本进行操作。

2. 实例化client对象

python 复制代码
from datetime import datetime
from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUS

token = "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.

python 复制代码
# 写操作
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 实现。

python 复制代码
# 读操作
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:           # 循环每个序列中的每条记录,即每个point
        print(record)

5. 关闭连接

db_client .close()

相关推荐
sun00770019 分钟前
mysql索引底层原理
数据库·mysql
chao_7893 小时前
二分查找篇——搜索旋转排序数组【LeetCode】一次二分查找
数据结构·python·算法·leetcode·二分查找
烛阴3 小时前
Python装饰器解除:如何让被装饰的函数重获自由?
前端·python
workflower3 小时前
MDSE和敏捷开发相互矛盾之处:方法论本质的冲突
数据库·软件工程·敏捷流程·极限编程
Tony小周3 小时前
实现一个点击输入框可以弹出的数字软键盘控件 qt 5.12
开发语言·数据库·qt
noravinsc3 小时前
django 一个表中包括id和parentid,如何通过parentid找到全部父爷id
python·django·sqlite
lifallen4 小时前
Paimon 原子提交实现
java·大数据·数据结构·数据库·后端·算法
ajassi20004 小时前
开源 python 应用 开发(三)python语法介绍
linux·python·开源·自动化
沉默媛4 小时前
如何安装python以及jupyter notebook
开发语言·python·jupyter
TDengine (老段)4 小时前
TDengine 数据库建模最佳实践
大数据·数据库·物联网·时序数据库·tdengine·涛思数据