使用Python远程连接并操作InfluxDB数据库
by:授客 QQ:1033553122
实践环境
Python 3.4.0
CentOS 6 64位(内核版本2.6.32-642.el6.x86_64)
influxdb-1.5.2.x86_64.rpm
网盘下载地址:
https://pan.baidu.com/s/1jAbY4xz5gvzoXxLHesQ-PA
influxdb-5.0.0-py2.py3-none-any.whl
下载地址:
https://pypi.org/project/influxdb/#files
下载地址:https://pan.baidu.com/s/1DQ0HGYNg2a2-VnRSBdPHmg
几个重要的名词介绍
database:数据库;
measurement:数据库中的表;
point:表里面的一行数据。
每个行记录由time(纳秒时间戳)、字段(fields)和tags组成。
time:每条数据记录的时间,也是数据库自动生成的主索引;
fields:记录各个字段的值;
tags:各种有索引的属性,一般用于where查询条件。
实践代码
#encoding:utf-8
__author__ = 'shouke'
import random
from influxdb import InfluxDBClient
client = InfluxDBClient('10.203.25.106', 8086, timeout=10) # timeout 超时时间 10秒
print('获取数据库列表:')
database_list = client.get_list_database()
print(database_list)
print('\n创建数据库')
client.create_database('mytestdb')
print(client.get_list_database())
print('\n切换至数据库(切换至对应数据库才可以操作数据库对象)\n')
client.switch_database('mytestdb')
print('插入表数据\n')
for i in range(0, 10):
json_body = [
{
"measurement": "table1",
"tags": {
"stuid": "stuid1"
},
# "time": "2018-05-16T21:58:00Z",
"fields": {
"value": float(random.randint(0, 1000))
}
}
]
client.write_points(json_body)
print('查看数据库所有表\n')
tables = client.query('show measurements;')
print('查询表记录')
rows = client.query('select value from table1;')
print(rows)
print('\n删除表\n')
client.drop_measurement('table1')
print('删除数据库\n')
client.drop_database('mytestdb')
输出结果:
获取数据库列表:
[{'name': '_internal'}]
创建数据库
[{'name': '_internal'}, {'name': 'mytestdb'}]
切换至数据库(切换至对应数据库才可以操作数据库对象)
插入表数据
查看数据库所有表
查询表记录
ResultSet({'('table1', None)': [{'time': '2018-05-23T11:55:55.341839963Z', 'value': 165}, {'time': '2018-05-23T11:55:55.3588771Z', 'value': 215}, {'time': '2018-05-23T11:55:55.367430575Z', 'value': 912}, {'time': '2018-05-23T11:55:55.37528554Z', 'value': 34}, {'time': '2018-05-23T11:55:55.383530082Z', 'value': 680}, {'time': '2018-05-23T11:55:55.391322174Z', 'value': 247}, {'time': '2018-05-23T11:55:55.399173622Z', 'value': 116}, {'time': '2018-05-23T11:55:55.407073805