Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从python向node.js发送post请求以利用geckoboard?_Python_Geckoboard - Fatal编程技术网

如何从python向node.js发送post请求以利用geckoboard?

如何从python向node.js发送post请求以利用geckoboard?,python,geckoboard,Python,Geckoboard,Geckoboard提供了连接到其数据集API的功能,您可以在下面的实现中看到 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 sa

Geckoboard提供了连接到其数据集API的功能,您可以在下面的实现中看到

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 }
]

更新:Geckoboard现在为其数据集API提供了自己的官方Python客户端库


将Python与Geckoboard的数据集API结合使用是完全可能的。您可以使用任何可以使用JSON执行HTTPS请求的语言或平台,尽管Geckoboard到目前为止只发布了针对Ruby和Node的官方库

编辑:我在下面做了一个简单的例子,但后来发现:

简而言之,您只需要:

  • 将带有
    模式的
    对象放入
    https://api.geckoboard.com/datasets
    创建数据集
  • 将带有
    数据的
    数组放入
    https://api.geckoboard.com/datasets/:id
    替换数据集中的所有数据
  • POST
    使用
    data
    数组发布到
    https://api.geckoboard.com/datasets/:id
    附加到数据集中的数据
  • 删除
    https://api.geckoboard.com/datasets/:id
    删除数据集的步骤
这些请求概述在--

我没有写太多Python,因此这可能不是很像Python,但这里有一种方法,您可以使用Python中的
请求
库来创建
Geckoboard
库来完成这项工作:

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, ''))

我想你正在寻找这样的东西:有很多方法可以做到这一点:
请求
httplib
urllib
,等等。到目前为止你尝试过什么吗?另请参阅相关帖子:还有一个全新的R包可以与Geckoboard数据集以及自定义小部件API进行通信。看,谢谢!我尝试使用replace函数并将其作为数据输入:[{'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':服务器收到了无效的JSON。}}我想我已经解决了!数据输入应该是{'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}