1

Python で influxdb データベースにデータを追加するために write_points() を使用しようとしています。ただし、write_points のタイムスタンプ部分でエラーが発生します。最初に使用して、タイムスタンプを複数の方法で定義しようとしました

info = line.split()
s_time = info[2]
i_time = "20" + s_time[6:8] + "-" + s_time[0:2] + "-" + s_time[3:5] + ' ' + s_time[9:]
fixedtime = datetime.datetime.strptime(i_time, "%Y-%m-%d %H:%M:%S")

influxdbに必要な他のすべての部分とともにJSONに時間を追加して、タイムスタンプをintにしてみました

inttime = int(time.time()*1000);

エポックタイムを教えてくれます。これらのタイムスタンプは両方とも、コードのこの行から値エラーを発生させます

dbclient.write_points(db_point, time_precision='ms', protocol='json')

そして最後の行で

    if isinstance(timestamp, Integral):
        return timestamp  # assume precision is correct if timestamp is int
    if isinstance(_get_unicode(timestamp), text_type):
        timestamp = parse(timestamp)
    if isinstance(timestamp, datetime):
        if not timestamp.tzinfo:
            timestamp = UTC.localize(timestamp)
        ns = (timestamp - EPOCH).total_seconds() * 1e9
        if precision is None or precision == 'n':
            return ns
        elif precision == 'u':
            return ns / 1e3
        elif precision == 'ms':
            return ns / 1e6
        elif precision == 's':
            return ns / 1e9
        elif precision == 'm':
            return ns / 1e9 / 60
        elif precision == 'h':
            return ns / 1e9 / 3600
    raise ValueError(timestamp)

line_protocol.py で

エポック時間を使用すると、整数が何らかの形でセットに変換されるため、if ステートメントは渡されませんが、文字列が if ステートメントの 1 つを渡す理由はわかりません

4

1 に答える 1