pypresto
Advanced tools
+1
-1
| Metadata-Version: 1.1 | ||
| Name: pypresto | ||
| Version: 0.1.6 | ||
| Version: 1.0.0 | ||
| Summary: Python wrapper for running queries on Presto server | ||
@@ -5,0 +5,0 @@ Home-page: https://github.com/NonWhite/pyprestowrapper |
| Metadata-Version: 1.1 | ||
| Name: pypresto | ||
| Version: 0.1.6 | ||
| Version: 1.0.0 | ||
| Summary: Python wrapper for running queries on Presto server | ||
@@ -5,0 +5,0 @@ Home-page: https://github.com/NonWhite/pyprestowrapper |
@@ -1,2 +0,2 @@ | ||
| pandas==0.19.2 | ||
| requests==2.13.0 | ||
| pandas==0.20.3 | ||
| requests==2.18.4 |
+46
-27
@@ -5,4 +5,4 @@ import os | ||
| import requests | ||
| from base64 import b64encode | ||
| from copy import deepcopy as copy | ||
| from base64 import b64encode | ||
| from requests.auth import HTTPBasicAuth | ||
@@ -12,9 +12,10 @@ | ||
| def __init__(self, host, user, catalog, port=8080, schema='default', password=None): | ||
| def __init(self,host,user,catalog,port=8080,schema='default',password=None) : | ||
| self.presto_server = '%s:%s' % (host,port) | ||
| self.user = user | ||
| self.password = password | ||
| self.set_headers(catalog, schema) | ||
| self.set_headers(catalog,schema) | ||
| self.set_auth(user,password) | ||
| def set_headers(self, catalog, schema) : | ||
| def set_headers(self,catalog,schema) : | ||
| self.__headers = { | ||
@@ -28,27 +29,45 @@ 'X-Presto-Catalog': catalog, | ||
| def send_query(self, sql_query, auth=False): | ||
| def set_auth(self,user,pasword) : | ||
| if pasword is None : | ||
| self.__auth = None | ||
| self.__auth = HTTPBasicAuth(user,pasword) | ||
| def send_query(self,sql_query) : | ||
| req_url = os.path.join(self.presto_server,'v1/statement') | ||
| if auth: | ||
| authentication = HTTPBasicAuth(self.user, self.password) | ||
| response = requests.post(req_url, headers=self.__headers, data=sql_query, auth=authentication) | ||
| else: | ||
| response = requests.post(req_url, headers=self.__headers, data=sql_query) | ||
| if response.status_code != 200: | ||
| args = { | ||
| 'req_url': req_url, | ||
| 'data': sql_query | ||
| } | ||
| return self.make_request(**args) | ||
| def make_request(self,req_url,method='GET',data=None) : | ||
| if method == 'GET' : | ||
| req_func = requests.get | ||
| elif method == 'POST' : | ||
| req_func = requests.post | ||
| else : | ||
| raise Exception('Method %s not supported' % method) | ||
| args = { | ||
| 'url': req_url, | ||
| 'headers': self.__headers | ||
| } | ||
| if self.__auth : | ||
| args['auth'] = self.__auth | ||
| if data : | ||
| args['data'] = data | ||
| response = req_func(**args) | ||
| if response.status_code != 200 : | ||
| response.raise_for_status() | ||
| return response.json() | ||
| response = response.json() | ||
| if response.get('error',None) : | ||
| raise Exception(response['error']) | ||
| return response | ||
| def run_query(self, sql_query, auth=False): | ||
| response = self.send_query(sql_query, auth) | ||
| def run_query(self,sql_query) : | ||
| response = self.send_query(sql_query) | ||
| series = [] | ||
| columns = [] | ||
| while 'nextUri' in response: | ||
| if auth: | ||
| authentication = HTTPBasicAuth(self.user, self.password) | ||
| response = requests.get(response['nextUri'], auth=authentication) | ||
| else: | ||
| response = requests.get(response['nextUri']) | ||
| if response.status_code != 200: | ||
| response.raise_for_status() | ||
| response = response.json() | ||
| if 'data' in response: | ||
| while 'nextUri' in response : | ||
| response = self.make_request(response['nextUri']) | ||
| if 'data' in response : | ||
| columns = columns or [col['name'] for col in response['columns']] | ||
@@ -61,10 +80,10 @@ lst_rows = response['data'] | ||
| series.append(copy(serie)) | ||
| print 'Getting data (rows: %s)' % len(series) | ||
| #print 'Getting data (rows: %s)' % len(series) | ||
| time.sleep(1) | ||
| else: | ||
| print 'Running query' | ||
| #print 'Running query' | ||
| time.sleep(5) | ||
| df = pandas.DataFrame(series) | ||
| if df.empty: | ||
| if df.empty : | ||
| raise Exception('No data returned') | ||
| return df |
+2
-2
@@ -1,2 +0,2 @@ | ||
| pandas==0.19.2 | ||
| requests==2.13.0 | ||
| pandas==0.20.3 | ||
| requests==2.18.4 |
+1
-1
@@ -30,3 +30,3 @@ import os | ||
| name='pypresto', | ||
| version='0.1.6', | ||
| version='1.0.0', | ||
| author='NonWhite', | ||
@@ -33,0 +33,0 @@ author_email='wperezurcia@gmail.com', |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
10881
2.84%116
17.17%