diff --git a/pyproject.toml b/pyproject.toml index 3d4d922..4390d8c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "upsolver-sdk-python" -version = "0.1.7" +version = "0.1.8" description = "Python SDK for Upsolver" authors = ["Upsolver Team "] diff --git a/upsolver/client/poller.py b/upsolver/client/poller.py index 45dbc7c..dd7e57d 100644 --- a/upsolver/client/poller.py +++ b/upsolver/client/poller.py @@ -92,9 +92,14 @@ def extract_json() -> dict: if 'result' in rjson: result = rjson['result'] - grid = result['grid'] # columns, data, ... - column_names = [c['name'] for c in grid['columns']] - data_w_columns: ExecutionResult = [dict(zip(column_names, row)) for row in grid['data']] + if rjson['kind'] == 'upsolver_scalar_query_response': + scalar = result['scalar'] + column_name = [scalar['valueType']] + data_w_columns: ExecutionResult = [dict(zip([column_name], [scalar]))] + else: + grid = result['grid'] # columns, data, ... + column_name = [c['name'] for c in grid['columns']] + data_w_columns: ExecutionResult = [dict(zip(column_name, row)) for row in grid['data']] return data_w_columns, result.get('next') else: diff --git a/upsolver/dbapi/examples.py b/upsolver/dbapi/examples.py index ff757b4..fa20432 100644 --- a/upsolver/dbapi/examples.py +++ b/upsolver/dbapi/examples.py @@ -76,3 +76,9 @@ except BaseException as e: print('Caught error on closed connection') # %% +job_name = '' # Job name here +print('Execute a `SHOW CREATE` statement:') +result1 = cursor.execute(f'show create job {job_name};') +print('create job statement:') +result2 = cursor.fetchone() +print(result2) diff --git a/upsolver/dbapi/utils.py b/upsolver/dbapi/utils.py index 5e06b2d..4ce8f5b 100644 --- a/upsolver/dbapi/utils.py +++ b/upsolver/dbapi/utils.py @@ -83,7 +83,12 @@ def extract_json() -> dict: if 'result' in rjson: result = rjson['result'] - result['grid']['has_next_page'] = result.get('next') is not None - return result['grid'], result.get('next') + if rjson['kind'] == 'upsolver_scalar_query_response': + scalar = result['scalar'] + columns = [{'name': scalar['valueType'], 'columnType': {'clazz': 'StringColumnType'}}] + return {'columns': columns, 'data': [scalar]}, result.get('next') + else: + result['grid']['has_next_page'] = result.get('next') is not None + return result['grid'], result.get('next') else: return rjson, None