2017-02-21 16 views
0

Geckoboard提供this documentation連接到他們的數據集API,您可以在下面看到實現。如何發送請求到node.js從python到利用geckoboard?

var API_KEY = 'API_KEY'; 

var gb = require('geckoboard')(
    API_KEY 
); 


gb.datasets.findOrCreate(
    { 
    id: 'sales.by_day', 
    fields: { 
     quantity: { 
     type: 'number', 
     name: 'Number of sales' 
     }, 
     gross: { 
     type: 'money', 
     name: 'Gross value of sales', 
     currency_code: "USD" 
     }, 
     date: { 
     type: 'date', 
     name: 'Date' 
     } 
    } 
    }, 
    function (err, dataset) { 
    if (err) { 
     console.error(err); 
     return; 
    } 
    dataset.put(
     [ 
     { date: '2016-01-01', quantity: 819, gross: 2457000 }, 
     { date: '2016-01-02', quantity: 409, gross: 1227000 }, 
     { date: '2016-01-03', quantity: 164, gross: 492000 } 
     ], 
     function (err) { 
     if (err) { 
      console.error(err); 
      return; 
     } 

     console.log('Dataset created and data added'); 
     } 
    ); 
    } 
); 

我想看看是否有辦法通過python(不使用node.js)發佈此附加數據。像這樣的事情是可能的,或者我必須使用模式?

[ 
    { date: '2017-01-01', quantity: 1213, gross: 23423 }, 
    { date: '2017-01-02', quantity: 111, gross: 1313123 }, 
    { date: '2017-01-03', quantity: 333, gross: 21314 } 
] 
+0

我認爲你正在尋找這樣的東西:https://pypi.python.org/pypi/geckoboard/0.8.6 – Stats4224

+0

有很多方法可以做到這一點:'request','httplib','urllib '等等。你到目前爲止嘗試過什麼嗎? – Marat

+0

另請參閱相關文章:http://stackoverflow.com/questions/31133708/python-script-to-post-data-to-geckoboard – Stats4224

回答

2

在Geckoboard的Datasets API中使用Python是絕對有可能的。您可以使用任何可以使用JSON執行HTTPS請求的語言或平臺 - 儘管Geckoboard目前僅發佈了針對Ruby和Node的官方庫。

編輯:我做了下面一個簡單的例子,但後來發現這一點:https://github.com/helium/geckoboard-python/

總之你只需要:

  • PUT與一個schema對象https://api.geckoboard.com/datasets創建數據集
  • PUTdata陣列到https://api.geckoboard.com/datasets/:id以替換數據集中的所有數據
  • POST用一個data陣列https://api.geckoboard.com/datasets/:id
  • DELETE追加到數據在數據集中https://api.geckoboard.com/datasets/:id刪除數據集

這些請求在概述 - https://developer.geckoboard.com/api-reference/curl/

我沒有寫太多Python,所以這可能不是Pythonic,但是這裏有一種方法,你可以在Python中創建一個Geckoboard庫來爲你做這件事,使用下面的requests庫:

import requests 

    class Geckoboard(object): 
      def __init__(self, api_key): 
        self.api_key = api_key 

      def create(self, name, schema): 
        url = 'https://api.geckoboard.com/datasets/%s' % name 
        return requests.put(url, json=schema, auth=(self.api_key, '')) 

      def delete(self, name): 
        url = 'https://api.geckoboard.com/datasets/%s' % name 
        return request.delete(url, auth=(self.api_key, '')) 

      def replace(self, name, data): 
        url = 'https://api.geckoboard.com/datasets/%s/data' % name 
        return requests.put(url, json=data, auth=(self.api_key, '')) 

      def append(self, name, data): 
        url = 'https://api.geckoboard.com/datasets/%s/data' % name 
        return requests.post(url, json=data, auth=(self.api_key, '')) 
+1

謝謝!我嘗試使用替換函數並輸入以下數據:[{'date':'2016-01-01','quantity':819,'gross':2457000},{'date':'2016-01 -02','quantity':409,'gross':1227000},{'date':'2016-01-03','quantity':164,'gross':492000}]。但是,我收到以下錯誤:{u'error':{u'message':u'服務器收到了無效的JSON'。}} – Chris

+1

想想我明白了!數據輸入應爲{'data':[{'date':'2016-01-01','quantity':819,'gross':2457000},{'date':'2016-01-02', 'quantity':409,'gross':1227000},{'date':'2016-01-03','quantity':164,'gross':492000}]} – Chris

+0

是的,你明白了:)對不起沒有更清楚 –