Python简单使用InfluxDB

本文介绍了如何在Python中使用InfluxDB,包括安装过程和数据格式Line Protocol的讲解,重点在于通过Python程序与InfluxDB进行数据交互,理解InfluxDB的数据库、存储策略、测量指标以及时间戳等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

之前已经在自己的MQTT服务器上安装好了InfluxDB时序数据库,接下来写个Python程序测试下.

安装

API详情参阅这里
打开powershell,执行pip install influxdb安装模块

程序

程序API详细参考这里

# coding=utf-8
import time
from influxdb import InfluxDBClient


def read_info():
	data_list = [{'measurement': 'win',
	             'tags': {'cpu': 'i7-7700HQ'},
	             'fields': {'cpu_info_user': cpu_time_info[0],
	                        'cpu_info_system': cpu_time_info[1],
	                        'cpu_info_idle': cpu_time_info[2],
	                        'cpu_info_interrupt': cpu_time_info[3],
	                        'cpu_info_dpc': cpu_time_info[4]}}]
	return data_list 

if __name__ == '__main__':
    client = InfluxDBClient(host, port, user, password, database)  # 初始化
    counts = 0  #计数,也就是数据上传20次
    while counts <= 20:#
        counts += 1
        client.write_points(read_info())
        time.sleep(5)
        
程序功能很简单,每5秒上传一次CPU使用状况,连续上传20次.
其中核心知识是数据格式,这里会自动打包字典到JSON,一开始在这打包成JSON上传报错.而且需要把这个字典放在列表中,因为一次可以添加多个字典格式上传.其中必须有'measurement','tags','fields'三个Key.

数据格式 Line Protocol

在 InfluxDB 中,我们可以粗略的将要存入的一条数据看作一个虚拟的 key 和其对应的 value(field value),格式如下:
cpu_usage,host=server01,region=us-west value=0.64 1434055562000000000
虚拟的 key 包括以下几个部分: database, retention policy, measurement, tag sets, field name, timestamp。 database 和 retention policy 在上面的数据中并没有体现,通常在插入数据时在 http 请求的相应字段中指定。
  • database: 数据库名,在 InfluxDB 中可以创建多个数据库,不同数据库中的数据文件是隔离存放的,存放在磁盘上的不同目录。
  • retention policy: 存储策略,用于设置数据保留的时间,每个数据库刚开始会自动创建一个默认的存储策略
    autogen,数据保留时间为永久,之后用户可以自己设置,例如保留最近2小时的数据。插入和查询数据时如果不指定存储策略,则使用默认存储策略,且默认存储策略可以修改。InfluxDB
    会定期清除过期的数据。
  • measurement: 测量指标名,例如 cpu_usage 表示 cpu 的使用率。
  • tag sets: tags 在 InfluxDB 中会按照字典序排序,不管是 tagk 还是 tagv,只要不一致就分别属于两个
    key,例如 host=server01,region=us-west 和 host=server02,region=us-west
    就是两个不同的 tag set。
  • field name: 例如上面数据中的 value 就是 fieldName,InfluxDB 中支持一条数据中插入多个
    fieldName,这其实是一个语法上的优化,在实际的底层存储中,是当作多条数据来存储。 timestamp:
    每一条数据都需要指定一个时间戳,在 TSM 存储引擎中会特殊对待,以为了优化后续的查询操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值