繁体   English   中英

InfluxDB:由于我的令牌和 os.getenv,无法连接到客户端

[英]InfluxDB : cant connect with the client because of my token and os.getenv

我刚开始使用 InfluxDB。 在用户界面上有一个部分 Python 以数据库为例:初始化客户端,写入数据,发出请求并关闭客户端。 为了验证请求,您必须在 UI 上生成一个令牌,以确保请求安全。 但是当我运行示例代码时,我从代码的第 12 行收到错误“只能将 str(不是“NoneType”)连接到 str”。

代码:

from datetime import datetime
import os

from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUS

# You can generate an API token from the "API Tokens Tab" in the UI
token = os.getenv("INFLUX_TOKEN")
org = "XXXXXXX"
bucket = "XXXXXXX Bucket"

with InfluxDBClient(url="https://europe-west1-1.gcp.cloud2.influxdata.com", token=token, org=org) as client:

    write_api = client.write_api(write_options=SYNCHRONOUS)
    point = Point("mem") \
        .tag("host", "host1") \
        .field("used_percent", 23.43234543) \
        .time(datetime.utcnow(), WritePrecision.NS)

    write_api.write(bucket, org, point)
    
    query = """from(bucket: "XXXXXXX Bucket") |> range(start: -1h)"""
    tables = client.query_api().query(query, org=org)
    for table in tables:
        for record in table.records:
            print(record)
            
    client.close()

我知道问题来自 os.getenv("INFLUX_TOKEN") 因为它应该返回一个字符串但实际上返回 NoneType object,但我不知道为什么它不起作用。 使用令牌,我得到了两件事:令牌的名称及其创建时获得的代码。 我试过了:

  • os.getenv("代币名称")
  • os.getenv("代币代码")
  • 与上面的 2 相同,但用 ' 而不是 "

一直都是同样的错误,如果有人能帮助我,请多多指教!

如果os.getenv("INFLUX_TOKEN")返回None ,则您的环境变量实际上有问题,这意味着未设置INFLUX_TOKEN变量。

您可以在您的 shell 中手动设置它,在您通过输入 ssh shell 生成令牌后

export INFLUX_TOKEN="your-influx-token"

您可以在此处找到有关环境变量的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM