diff --git a/influx.py b/influx.py index d4abaf4..d80f3e6 100644 --- a/influx.py +++ b/influx.py @@ -292,7 +292,7 @@ class InfluxDBWrapper: print(msg) reader = self._client.query_api().query_csv(msg) - sort = False + print('CSV') converters = None group = None column_names = None @@ -303,6 +303,7 @@ class InfluxDBWrapper: for row in reader: if not row: continue + print(row) if row[0]: if row[0] == '#datatype': converters = {i: CONVERTER.get(d) for i, d in enumerate(row) if i > 2} @@ -311,6 +312,7 @@ class InfluxDBWrapper: group = row continue if column_names is None: + print('COL', row) column_names = row keys = {} for col, (name, grp) in enumerate(zip(column_names, group)): @@ -319,8 +321,6 @@ class InfluxDBWrapper: # if name in keynames or (columns is None and name not in dropcols): if name in keynames or columns is None: keys[col] = converters.pop(col) - else: - sort = True valuecls = NamedTuple([row[i] for i in converters]) keycls = NamedTuple([row[i] for i in keys]) continue @@ -328,23 +328,22 @@ class InfluxDBWrapper: # new table, new key table = row[2] key = keycls(f(row[i]) for i, f in keys.items()) + print('new table', table, key) if result.get(key) is None: result[key] = [] - elif not sort: - # this should not happen - sort = True result[key].append(valuecls(f(row[i]) for i, f in converters.items())) if last: + print('LAST') for key, table in result.items(): result[key], = table - elif sort: + else: for table in result.values(): table.sort() return result - def curves(self, start=None, stop=None, measurement=None, field='float', interval=None, - add_prev=3600, add_end=False, **tags): + def curves(self, start=None, stop=None, measurement=('*.value', '*.target'), field='float', + interval=None, add_prev=3600, add_end=True, **tags): """get curves :param start: start time (default: one month ago) @@ -359,14 +358,15 @@ class InfluxDBWrapper: where and are NamedTuple is (, ) - when field='float' (the default), the returned values are either a floats or None + when _field='float' (the default), the returned values are either a floats or None """ - for key, val in zip(('_measurement', '_field'), (measurement, field)): - tags.setdefault(key, val) + tags.setdefault('_measurement', measurement) + tags.setdefault('_field', field) start, stop = abs_range(start, stop) rstart, rstop = round_range(start, stop, interval) if rstart < rstop: - result = self.query(rstart, rstop, interval, columns=[], **tags) + result = self.query(rstart, rstop, interval, columns=None, **tags) + # result = self.query(rstart, rstop, interval, columns=['stream', 'device'], **tags) else: result = {} if add_prev: diff --git a/t.py b/t.py index 6871f9b..a96d0cf 100644 --- a/t.py +++ b/t.py @@ -1,6 +1,5 @@ import time import numpy as np -import pandas as pd from influx import InfluxDBWrapper, NamedTuple, RegExp DAY = 24 * 3600