data.world-py
data.world-py copied to clipboard
Bug in SQL query interface of RestApiClient
When interacting with the sql
method of the RestApiClient
, the function leverages the method sql_post
from QueriesAPI
.
This latter method does not leverage the query
argument passed by the function.
The method from QueriesAPI
that leverages the query
argument directly is the sql_get
At the moment, I'm forced to override the call from sql_post
to sql_get
in method sql
of the RestApiClient
for the method to work.
def override_sql(self, dataset_key, query, desired_mimetype='application/json',
**kwargs):
"""Executes SQL queries against a dataset via POST
:param dataset_key: Dataset identifier, in the form of owner/id
:type dataset_key: str
:param query: SQL query
:type query: str
:param include_table_schema: Flags indicating to include table schema
in the response
:type include_table_schema: bool
:returns: file object that can be used in file parsers and
data handling modules.
:rtype: file-like object
:raises RestApiException: If a server error occurs
Examples
--------
>>> import datadotworld as dw
>>> api_client = dw.api_client()
>>> api_client.sql('username/test-dataset', 'query') # doctest: +SKIP
"""
api_client = self._build_api_client(
default_mimetype_header_accept=desired_mimetype)
queries_api = kwargs.get('queries_api_mock',
_swagger.QueriesApi(api_client))
owner_id, dataset_id = parse_dataset_key(dataset_key)
try:
response = queries_api.sql_get(
owner_id, dataset_id, query, _preload_content=False, **kwargs)
return six.BytesIO(response.data)
except _swagger.rest.ApiException as e:
raise RestApiError(cause=e)
RestApiClient.sql = override_sql
Should I use a different method to leverage the sql query functionality?