0

我正在使用 python api (sodapy) 从https://dev.socrata.com/foundry/data.energystar.gov/ebvx-pb7r获取数据。如何通过api获取本页显示的所有字段?具体来说,我需要 additional_model_information 字段,但我认为还会有其他字段。我努力了:

  1. “其中附加模型信息不为空”:包含该字段,但我也想要具有空值的行。
  2. "select='additional_model_information' 该字段被返回,但没有别的。
  3. "select=*" 不添加任何字段。
  4. “where='additional_model_information 不为空或additional_model_information 为空'”这似乎有效。
  5. “选择=列出所有字段”应该可以工作,但看起来很笨拙。
  6. 可以进行 2 次调用,一次获取 * 数据,另一次获取其他字段。

我怀疑我错过了什么。任何帮助表示赞赏。

import pprint
import sodapy

client = sodapy.Socrata(domain='data.energystar.gov', app_token=None)
rows = client.get('ebvx-pb7r', where='additional_model_information is not null or additional_model_information is null')
for row in rows:
    pprint.pprint(row)
4

1 回答 1

0

如果您where完全不使用该参数,您将获得数据集的未过滤版本,这听起来像是您想要的。您还需要包含limit参数以确保获得所有记录,因为总计数为1058,大于默认页面大小1000

import pprint
import sodapy

client = sodapy.Socrata(domain='data.energystar.gov', app_token=None)
rows = client.get('ebvx-pb7r', limit=5000)
for row in rows:
    pprint.pprint(row)

我认为部分混淆可能来自这样一个事实:如果additional_model_information给定记录没有值,我们返回的 JSON 对象将省略该字段。

于 2016-04-28T21:09:59.497 回答