@@ -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