-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathquery.py
More file actions
33 lines (26 loc) · 958 Bytes
/
query.py
File metadata and controls
33 lines (26 loc) · 958 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from json import load
from urllib2 import urlopen
from urllib import urlencode
from pandas import DataFrame
def query(sql, format='df'):
'''
Submit an `sql` query (string) to treasury.io and return a pandas DataFrame.
For example::
print('Operating cash balances for May 22, 2013')
print(treasuryio.query('SELECT * FROM "t1" WHERE "date" = \'2013-05-22\';'))
Return a dict::
treasuryio.query('SELECT * FROM "t1" WHERE "date" = \'2013-05-22\';', format='dict')
'''
url = 'http://api.treasury.io/cc7znvq/47d80ae900e04f2/sql/'
query_string = urlencode({'q':sql})
handle = urlopen(url + '?' + query_string)
if handle.code == 200:
d = load(handle)
if format == 'df':
return DataFrame(d)
elif format == 'dict':
return d
else:
raise ValueError('format must equal "df" or "dict"')
else:
raise ValueError(handle.read())