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