@@ -79,22 +79,21 @@ class SlicingDice(SlicingDiceAPI):
79
79
}
80
80
print sd.insert(inserting_json)
81
81
"""
82
+
82
83
def __init__ (
83
- self , write_key = None , read_key = None , master_key = None ,
84
- custom_key = None , use_ssl = True , timeout = 60 , uses_test_endpoint = False ):
84
+ self , write_key = None , read_key = None , master_key = None ,
85
+ custom_key = None , use_ssl = True , timeout = 60 ):
85
86
"""Instantiate a new SlicingDice object.
86
87
87
88
Keyword arguments:
88
89
key(string or SlicerKey obj) -- Key to access API
89
90
use_ssl(bool) -- Define if the request uses verification SSL for
90
91
HTTPS requests. Defaults False.(Optional)
91
92
timeout(int) -- Define timeout to request,
92
- defaults 30 secs(default 30).
93
- test(bool) -- if true will use tests end-point (default False)
93
+ defaults 60 secs(default 30).
94
94
"""
95
95
super (SlicingDice , self ).__init__ (
96
96
master_key , write_key , read_key , custom_key , use_ssl , timeout )
97
- self .uses_test_endpoint = uses_test_endpoint
98
97
99
98
def _count_query_wrapper (self , url , query ):
100
99
"""Validate count query and make request.
@@ -126,12 +125,6 @@ def _data_extraction_wrapper(self, url, query):
126
125
req_type = "post" ,
127
126
key_level = 0 )
128
127
129
- def _wrapper_test (self ):
130
- base_url = SlicingDice .BASE_URL
131
- if self .uses_test_endpoint :
132
- base_url += "/test"
133
- return base_url
134
-
135
128
def _saved_query_wrapper (self , url , query , update = False ):
136
129
"""Validate saved query and make request.
137
130
@@ -151,7 +144,8 @@ def _saved_query_wrapper(self, url, query, update=False):
151
144
key_level = 2 )
152
145
153
146
def get_database (self ):
154
- """Get a database associated with this client (related to keys passed on construction)"""
147
+ """Get a database associated with this client (related to keys passed
148
+ on construction)"""
155
149
url = SlicingDice .BASE_URL + URLResources .DATABASE
156
150
return self ._make_request (
157
151
url = url ,
@@ -166,10 +160,9 @@ def create_column(self, data):
166
160
data -- A dictionary or list on the Slicing Dice column
167
161
format.
168
162
"""
169
- base_url = self ._wrapper_test ()
170
163
sd_data = validators .ColumnValidator (data )
171
164
if sd_data .validator ():
172
- url = base_url + URLResources .COLUMN
165
+ url = SlicingDice . BASE_URL + URLResources .COLUMN
173
166
return self ._make_request (
174
167
url = url ,
175
168
req_type = "post" ,
@@ -178,8 +171,7 @@ def create_column(self, data):
178
171
179
172
def get_columns (self ):
180
173
"""Get a list of columns"""
181
- base_url = self ._wrapper_test ()
182
- url = base_url + URLResources .COLUMN
174
+ url = SlicingDice .BASE_URL + URLResources .COLUMN
183
175
return self ._make_request (
184
176
url = url ,
185
177
req_type = "get" ,
@@ -192,10 +184,9 @@ def insert(self, data):
192
184
data -- A dictionary in the Slicing Dice data format
193
185
format.
194
186
"""
195
- base_url = self ._wrapper_test ()
196
187
sd_data = validators .InsertValidator (data )
197
188
if sd_data .validator ():
198
- url = base_url + URLResources .INSERT
189
+ url = SlicingDice . BASE_URL + URLResources .INSERT
199
190
return self ._make_request (
200
191
url = url ,
201
192
json_data = ujson .dumps (data ),
@@ -208,22 +199,20 @@ def count_entity(self, query):
208
199
Keyword arguments:
209
200
query -- A dictionary in the Slicing Dice query
210
201
"""
211
- base_url = self ._wrapper_test ()
212
- url = base_url + URLResources .QUERY_COUNT_ENTITY
202
+ url = SlicingDice .BASE_URL + URLResources .QUERY_COUNT_ENTITY
213
203
return self ._count_query_wrapper (url , query )
214
204
215
- def count_entity_total (self , tables = [] ):
205
+ def count_entity_total (self , tables = None ):
216
206
"""Make a count entity total query
217
207
218
208
Keyword arguments:
219
209
tables -- A dictionary containing the tables in which
220
210
the total query will be performed
221
211
"""
222
- query = {
223
- 'tables' : tables
224
- }
225
- base_url = self ._wrapper_test ()
226
- url = base_url + URLResources .QUERY_COUNT_ENTITY_TOTAL
212
+ query = {}
213
+ if tables is not None :
214
+ query ['tables' ] = tables
215
+ url = SlicingDice .BASE_URL + URLResources .QUERY_COUNT_ENTITY_TOTAL
227
216
return self ._make_request (
228
217
url = url ,
229
218
req_type = "post" ,
@@ -236,8 +225,7 @@ def count_event(self, query):
236
225
Keyword arguments:
237
226
data -- A dictionary query
238
227
"""
239
- base_url = self ._wrapper_test ()
240
- url = base_url + URLResources .QUERY_COUNT_EVENT
228
+ url = SlicingDice .BASE_URL + URLResources .QUERY_COUNT_EVENT
241
229
return self ._count_query_wrapper (url , query )
242
230
243
231
def aggregation (self , query ):
@@ -246,8 +234,7 @@ def aggregation(self, query):
246
234
Keyword arguments:
247
235
query -- An aggregation query
248
236
"""
249
- base_url = self ._wrapper_test ()
250
- url = base_url + URLResources .QUERY_AGGREGATION
237
+ url = SlicingDice .BASE_URL + URLResources .QUERY_AGGREGATION
251
238
if "query" not in query :
252
239
raise exceptions .InvalidQueryException (
253
240
"The aggregation query must have up the key 'query'." )
@@ -267,8 +254,7 @@ def top_values(self, query):
267
254
Keyword arguments:
268
255
query -- A dictionary query
269
256
"""
270
- base_url = self ._wrapper_test ()
271
- url = base_url + URLResources .QUERY_TOP_VALUES
257
+ url = SlicingDice .BASE_URL + URLResources .QUERY_TOP_VALUES
272
258
sd_query_top_values = validators .QueryValidator (query )
273
259
if sd_query_top_values .validator ():
274
260
return self ._make_request (
@@ -284,8 +270,7 @@ def exists_entity(self, ids, table=None):
284
270
ids -- A list with entities to check if exists
285
271
table -- In which table entities check be checked
286
272
"""
287
- base_url = self ._wrapper_test ()
288
- url = base_url + URLResources .QUERY_EXISTS_ENTITY
273
+ url = SlicingDice .BASE_URL + URLResources .QUERY_EXISTS_ENTITY
289
274
if len (ids ) > 100 :
290
275
raise exceptions .MaxLimitException (
291
276
"The query exists entity must have up to 100 ids." )
@@ -306,8 +291,7 @@ def get_saved_query(self, query_name):
306
291
Keyword arguments:
307
292
query_name(string) -- The name of the saved query
308
293
"""
309
- base_url = self ._wrapper_test ()
310
- url = base_url + URLResources .QUERY_SAVED + query_name
294
+ url = SlicingDice .BASE_URL + URLResources .QUERY_SAVED + query_name
311
295
return self ._make_request (
312
296
url = url ,
313
297
req_type = "get" ,
@@ -319,8 +303,7 @@ def get_saved_queries(self):
319
303
Keyword arguments:
320
304
query_name(string) -- The name of the saved query
321
305
"""
322
- base_url = self ._wrapper_test ()
323
- url = base_url + URLResources .QUERY_SAVED
306
+ url = SlicingDice .BASE_URL + URLResources .QUERY_SAVED
324
307
return self ._make_request (
325
308
url = url ,
326
309
req_type = "get" ,
@@ -332,8 +315,7 @@ def delete_saved_query(self, query_name):
332
315
Keyword arguments:
333
316
query_name(string) -- The name of the saved query
334
317
"""
335
- base_url = self ._wrapper_test ()
336
- url = base_url + URLResources .QUERY_SAVED + query_name
318
+ url = SlicingDice .BASE_URL + URLResources .QUERY_SAVED + query_name
337
319
return self ._make_request (
338
320
url = url ,
339
321
req_type = "delete" ,
@@ -346,8 +328,7 @@ def create_saved_query(self, query):
346
328
Keyword arguments:
347
329
query -- A dictionary query
348
330
"""
349
- base_url = self ._wrapper_test ()
350
- url = base_url + URLResources .QUERY_SAVED
331
+ url = SlicingDice .BASE_URL + URLResources .QUERY_SAVED
351
332
return self ._saved_query_wrapper (url , query )
352
333
353
334
def update_saved_query (self , name , query ):
@@ -357,8 +338,7 @@ def update_saved_query(self, name, query):
357
338
name -- The name of the saved query to update
358
339
query -- A dictionary query
359
340
"""
360
- base_url = self ._wrapper_test ()
361
- url = base_url + URLResources .QUERY_SAVED + name
341
+ url = SlicingDice .BASE_URL + URLResources .QUERY_SAVED + name
362
342
return self ._saved_query_wrapper (url , query , True )
363
343
364
344
def result (self , query ):
@@ -367,8 +347,7 @@ def result(self, query):
367
347
Keyword arguments:
368
348
query -- A dictionary query
369
349
"""
370
- base_url = self ._wrapper_test ()
371
- url = base_url + URLResources .QUERY_DATA_EXTRACTION_RESULT
350
+ url = SlicingDice .BASE_URL + URLResources .QUERY_DATA_EXTRACTION_RESULT
372
351
return self ._data_extraction_wrapper (url , query )
373
352
374
353
def score (self , query ):
@@ -377,6 +356,19 @@ def score(self, query):
377
356
Keyword arguments:
378
357
query -- A dictionary query
379
358
"""
380
- base_url = self ._wrapper_test ()
381
- url = base_url + URLResources .QUERY_DATA_EXTRACTION_SCORE
359
+ url = SlicingDice .BASE_URL + URLResources .QUERY_DATA_EXTRACTION_SCORE
382
360
return self ._data_extraction_wrapper (url , query )
361
+
362
+ def sql (self , query ):
363
+ """ Make a sql query to SlicingDice
364
+
365
+ :param query: the query written in SQL format
366
+ :return: The response from the SlicingDice
367
+ """
368
+ url = SlicingDice .BASE_URL + URLResources .QUERY_SQL
369
+ return self ._make_request (
370
+ url = url ,
371
+ string_data = query ,
372
+ req_type = "post" ,
373
+ key_level = 0 ,
374
+ content_type = 'application/sql' )
0 commit comments