@@ -105,6 +105,27 @@ def query_data_frame(self, query: str, org=None, data_frame_index: List[str] = N
105
105
106
106
from ..extras import pd
107
107
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
+
108
129
if org is None :
109
130
org = self ._influxdb_client .org
110
131
@@ -113,14 +134,7 @@ def query_data_frame(self, query: str, org=None, data_frame_index: List[str] = N
113
134
114
135
_parser = FluxCsvParser (response = response , serialization_mode = FluxSerializationMode .dataFrame ,
115
136
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 ()
124
138
125
139
# private helper for c
126
140
@staticmethod
0 commit comments