Python连接influxdb2.x
一、调研
1.1 influxdb.pypi
官方object网址为:https://pypi.org/project/influxdb/
当时接触这个需求的时候第一时间想的就是去python的官网寻找有关influxdb的object,但是经过阅读该第三方库介绍的时候发现该第三方库全部都是基于influxdb1.x的版本进行开发与测试的(可能兼容2.x,我没有找到文档中关于2.x的信息),所以果断放弃了这个第三方库。
1.2 influxdb_client.pypi
官方object网址为:https://pypi.org/project/influxdb-client/1.13.0/#queries
当打开这个网址的第一时间,一段令人激动的话映入眼帘(-.-!):
InfluxDB 2.0 python client library.所以pip install influxdb-client
二、连接
2.1 对象源码
通过官方文档查询,该库连接到influxdb需要以下主要参数:
参数名称 | 含义 |
---|---|
url | influxdb连接地址 |
token | 连接许可 |
debug | 是否启动http详细的请求记录 |
timeout | 超时时间 |
enable_zip | 是否启动Gzip压缩 |
org | 组织名称 |
当然,还能够接受更多的参数,具体请上该对象父类查看,或看下面的截图
2.2 连接实例
influxdb是向你提供token的,具体值在这里(按理说这个值是永久的):
连接代码:
client = InfluxDBClient(
url='http://123456:8087',
token='上一步拿到的token',
org='root'
)
经过这步之后就能进行连接了,如果出现token非永久化的问题可以加一个是否爬取token的判断,具体参见3.1
三、问题汇总
3.1 token非永久化问题结果
# 目前尚不清楚该token是否为永久化的token,如果存在过期问题则用以下的方法
# 该问题解决通过采用爬虫的方式重新爬取token
import base64
import requests
from fake_useragent import UserAgent
url = 'influxdb地址'
# 创建http-basic请求头
author_base = base64.b64encode(
f'{用户名}:'
f'{密码}'.encode('utf-8'))
author_base = str(author_base).split("'")[1]
headers = {
'User-Agent': UserAgent().chrome,
'authorization': f'Basic {author_base}'
}
# 请求
resp = requests.post(url, headers=headers)
# 获取token
token = resp.cookies['influxdb-oss-session']