File tree Expand file tree Collapse file tree 3 files changed +29
-5
lines changed
Expand file tree Collapse file tree 3 files changed +29
-5
lines changed Original file line number Diff line number Diff line change @@ -267,18 +267,27 @@ def query(self,
267267 query ,
268268 params = {},
269269 expected_response_code = 200 ,
270- database = None ):
270+ database = None ,
271+ raise_errors = True ):
271272 """Send a query to InfluxDB.
272273
273274 :param query: the actual query string
274275 :type query: str
276+
275277 :param params: additional parameters for the request, defaults to {}
276278 :type params: dict
279+
277280 :param expected_response_code: the expected status code of response,
278281 defaults to 200
279282 :type expected_response_code: int
283+
280284 :param database: database to query, defaults to None
281285 :type database: str
286+
287+ :param raise_errors: Whether or not to raise exceptions when InfluxDB
288+ returns errors, defaults to True
289+ :type raise_errors: bool
290+
282291 :returns: the queried data
283292 :rtype: :class:`~.ResultSet`
284293 """
@@ -295,7 +304,11 @@ def query(self,
295304
296305 data = response .json ()
297306
298- results = [ResultSet (result ) for result in data .get ('results' , [])]
307+ results = [
308+ ResultSet (result , raise_errors = raise_errors )
309+ for result
310+ in data .get ('results' , [])
311+ ]
299312
300313 # TODO(aviau): Always return a list. (This would be a breaking change)
301314 if len (results ) == 1 :
Original file line number Diff line number Diff line change 1010class ResultSet (object ):
1111 """A wrapper around a single InfluxDB query result"""
1212
13- def __init__ (self , series ):
13+ def __init__ (self , series , raise_errors = True ):
1414 self ._raw = series
15+ self ._error = self .raw .get ('error' , None )
1516
16- if ' error' in self . raw :
17- raise InfluxDBClientError (self .raw [ ' error' ] )
17+ if self . error is not None and raise_errors is True :
18+ raise InfluxDBClientError (self .error )
1819
1920 @property
2021 def raw (self ):
@@ -25,6 +26,11 @@ def raw(self):
2526 def raw (self , value ):
2627 self ._raw = value
2728
29+ @property
30+ def error (self ):
31+ """Error returned by InfluxDB"""
32+ return self ._error
33+
2834 def __getitem__ (self , key ):
2935 """
3036 :param key: Either a serie name, or a tags_dict, or
Original file line number Diff line number Diff line change @@ -370,6 +370,11 @@ def test_query_fail(self):
370370 self .assertIn ('database not found: db' ,
371371 ctx .exception .content )
372372
373+ def test_query_fail_ignore_errors (self ):
374+ result = self .cli .query ('select column_one from foo' ,
375+ raise_errors = False )
376+ self .assertEqual (result .error , 'database not found: db' )
377+
373378 def test_create_user (self ):
374379 self .cli .create_user ('test_user' , 'secret_password' )
375380 rsp = list (self .cli .query ("SHOW USERS" )['results' ])
You can’t perform that action at this time.
0 commit comments