influxdb-client-python
influxdb-client-python copied to clipboard
query_api.query_raw does not return str but urllib3.response.HTTPResponse object
Hi,
I just learned that the query_api.query_raw () does not return a str as written in the documentation bus instead an urllib3.response.HTTPResponse object, from which the resulting str can be fetched. I would appreciate either updating the documentation or the function to actually returning a str
I've encountered this only on the sync client, the async client returns str as per the docs.
@ivankudibal - is this just a doc update for the sync client?
Per the doc both sync and async should return a str representation of the CSV from the response
Execute synchronous Flux query and return result as raw unprocessed result as a str.
the sync QueryAPI:
def query_raw(self, query: str, org=None, dialect=_BaseQueryApi.default_dialect, params: dict = None):
"""
Execute synchronous Flux query and return result as raw unprocessed result as a str.
:param query: a Flux query
:param str, Organization org: specifies the organization for executing the query;
Take the ``ID``, ``Name`` or ``Organization``.
If not specified the default value from ``InfluxDBClient.org`` is used.
:param dialect: csv dialect format
:param params: bind parameters
:return: str
"""
org = self._org_param(org)
result = self._query_api.post_query(org=org, query=self._create_query(query, dialect, params), async_req=False,
_preload_content=False)
return result
The Async one:
async def query_raw(self, query: str, org=None, dialect=_BaseQueryApi.default_dialect, params: dict = None):
"""
Execute asynchronous Flux query and return result as raw unprocessed result as a str.
:param query: a Flux query
:param str, Organization org: specifies the organization for executing the query;
Take the ``ID``, ``Name`` or ``Organization``.
If not specified the default value from ``InfluxDBClientAsync.org`` is used.
:param dialect: csv dialect format
:param params: bind parameters
:return: :class:`~str`
"""
org = self._org_param(org)
result = await self._post_query(org=org, query=self._create_query(query, dialect, params))
raw_bytes = await result.read()
return raw_bytes.decode(_UTF_8_encoding)
In the sync one, the response should also be read and decoded as UTF8 just like the async version. I can submit a PR if needed.
I can submit a PR if needed.
Please do :)