55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
# !/usr/bin/env python
|
||
# -*- coding: utf-8 -*-
|
||
|
||
"""
|
||
Pro数据接口
|
||
Created on 2017/07/01
|
||
@author: polo,Jimmy
|
||
@group : https://waditu.com
|
||
"""
|
||
|
||
import pandas as pd
|
||
import json
|
||
from functools import partial
|
||
import requests
|
||
|
||
|
||
class DataApi:
|
||
|
||
__token = ''
|
||
__http_url = 'http://api.waditu.com/dataapi'
|
||
# __http_url = 'http://127.0.0.1:8000/dataapi'
|
||
|
||
def __init__(self, token, timeout=30):
|
||
"""
|
||
Parameters
|
||
----------
|
||
token: str
|
||
API接口TOKEN,用于用户认证
|
||
"""
|
||
self.__token = token
|
||
self.__timeout = timeout
|
||
|
||
def query(self, api_name, fields='', **kwargs):
|
||
req_params = {
|
||
'api_name': api_name,
|
||
'token': self.__token,
|
||
'params': kwargs,
|
||
'fields': fields
|
||
}
|
||
|
||
res = requests.post(f"{self.__http_url}/{api_name}", json=req_params, timeout=self.__timeout)
|
||
if res:
|
||
result = json.loads(res.text)
|
||
if result['code'] != 0:
|
||
raise Exception(result['msg'])
|
||
data = result['data']
|
||
columns = data['fields']
|
||
items = data['items']
|
||
return pd.DataFrame(items, columns=columns)
|
||
else:
|
||
return pd.DataFrame()
|
||
|
||
def __getattr__(self, name):
|
||
return partial(self.query, name)
|