您的位置:首页 > 编程语言 > Python开发

基于python的influxdb操作入门指南

2020-02-02 01:03 465 查看

基于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的一个样例,希望对各位有所帮助。

    • 点赞
    • 收藏
    • 分享
    • 文章举报
    qq_39427552 发布了2 篇原创文章 · 获赞 0 · 访问量 423 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: