Skip to content

Commit 3e38699

Browse files
authored
feat: Add query_data_frame_stream method (#121)
1 parent 1bb088f commit 3e38699

File tree

2 files changed

+23
-8
lines changed

2 files changed

+23
-8
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
### Features
44
1. [#112](https://github.com/influxdata/influxdb-client-python/pull/113): Support timestamp with different timezone in _convert_timestamp
55
1. [#120](https://github.com/influxdata/influxdb-client-python/pull/120): ciso8601 is an optional dependency and has to be installed separably
6+
1. [#121](https://github.com/influxdata/influxdb-client-python/pull/121): Added query_data_frame_stream method
67

78
### Bug Fixes
89
1. [#117](https://github.com/influxdata/influxdb-client-python/pull/117): Fixed appending default tags for single Point

influxdb_client/client/query_api.py

+22-8
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,27 @@ def query_data_frame(self, query: str, org=None, data_frame_index: List[str] = N
105105

106106
from ..extras import pd
107107

108+
_generator = self.query_data_frame_stream(query, org=org, data_frame_index=data_frame_index)
109+
_dataFrames = list(_generator)
110+
111+
if len(_dataFrames) == 0:
112+
return pd.DataFrame(columns=[], index=None)
113+
elif len(_dataFrames) == 1:
114+
return _dataFrames[0]
115+
else:
116+
return _dataFrames
117+
118+
def query_data_frame_stream(self, query: str, org=None, data_frame_index: List[str] = None):
119+
"""
120+
Synchronously executes the Flux query and return stream of Pandas DataFrame as a Generator['pd.DataFrame'].
121+
Note that if a query returns more then one table than the client generates a DataFrame for each of them.
122+
123+
:param query: the Flux query
124+
:param org: organization name (optional if already specified in InfluxDBClient)
125+
:param data_frame_index: the list of columns that are used as DataFrame index
126+
:return:
127+
"""
128+
108129
if org is None:
109130
org = self._influxdb_client.org
110131

@@ -113,14 +134,7 @@ def query_data_frame(self, query: str, org=None, data_frame_index: List[str] = N
113134

114135
_parser = FluxCsvParser(response=response, serialization_mode=FluxSerializationMode.dataFrame,
115136
data_frame_index=data_frame_index)
116-
_dataFrames = list(_parser.generator())
117-
118-
if len(_dataFrames) == 0:
119-
return pd.DataFrame(columns=[], index=None)
120-
elif len(_dataFrames) == 1:
121-
return _dataFrames[0]
122-
else:
123-
return _dataFrames
137+
return _parser.generator()
124138

125139
# private helper for c
126140
@staticmethod

0 commit comments

Comments
 (0)