基于python的influxdb操作入门指南

influxdb安装配置

关于此部分,网上其他博客有详尽的介绍,也没什么坑,此处不再说明。
装好后,运行数据库。

python环境搭建

这部分强烈建议使用Anaconda的python环境,会减少由于版本等问题造成的莫名其妙的bug。
只需运行:
$ pip install influxdb
即可配置环境。

使用实例:一个(可以说)比较全面的demo

1、连接influxdb数据库,并查看其中table名称(即“show databases”)
2、新建table
3、连接influxdb数据库并执行“use”命令(即“use tablename”)
4、定义数据格式,生成数据(本例中的三个数据分别是:随机数、CPU使用率、内存使用率)
5、向table中写入数据
6、按照数据库查询语句定义的规则,从table中查询
7、将查询的数据(迭代器)转化成list,并解析出其中的数据,供之后使用
8、删除table
# coding=utf-8
import random
import time
import psutil  #构建数据
from influxdb import InfluxDBClient

client_all = InfluxDBClient("localhost", "8086", "Tom", "", "")
DataBasename = "Tom"

# delete a database(table) from the client we connected, if
#   the client(Clientname) has a database named (Databasename): 
def DeletefromDB(Clientname, Databasename):
  database = Clientname.get_list_database()  # actually there's no need to check if Cn in database
  for Cn in database:
    if Databasename in Cn.values():
      Clientname.drop_database(Databasename)
      break

# returns a struct that contains a data item. 
def gen_item():
  data_list = [
    {
      'measurement': DataBasename,
      'tags': {
        'cpu': 'i7-7700HQ'
        },
      'fields':{
        'randnum':random.randint(1,100),
        'cpu-usage/%':psutil.cpu_percent(None),
        'memory-usage/%':psutil.virtual_memory().percent
        }
    }
  ]
  return data_list

def main():
    # create a database table named DataBasename:
    client_all.create_database(DataBasename)

    # connect to client and use the database "DataBasename"
    client = InfluxDBClient("localhost", "8086", "Tom", "", DataBasename)

    # query. this returns the result of "show measurements"
    # the string in ( ) can be changed into any instructions. 
    result = client.query('show measurements')

    # directly print the data (in string format)
    print("{0}".format(result))

    # write data in database:
    cnt = 0
    while cnt<10:
      client.write_points(gen_item())
      cnt = cnt+1
      time.sleep(0.1)

    # query data and get results.
    result = client.query("select * from "+DataBasename+" where \"cpu-usage/%\">3")
    items = list(result.get_points())  # from iterator to list

    # itgt is short for 'item to get type'
    itgt = items[0]
    print(type(itgt['time']), type(itgt[u'cpu']), type(itgt[u'randnum']), type(itgt[u'cpu-usage/%']), type(itgt[u'memory-usage/%']))

    # print the items in the format we need:
    for item in items:
      print(item['time'], item[u'cpu'], item[u'randnum'], item[u'cpu-usage/%'], item[u'memory-usage/%'])
    
    # delete table from client 'client_all'.
    DeletefromDB(client_all, DataBasename)
    print(client_all.get_list_database())

if __name__ == '__main__':

  # print the table names
  print(client_all.get_list_database())
  
  main()

运行结果

1、数据库直接查询:
在这里插入图片描述
2、程序运行结果(我的DB中还有另外两张表,这无伤大雅,我们只需关注名为Tom的表即可。)

以上就是python调用influxdb的一个样例,希望对各位有所帮助。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值