阅读Json数据的Python停止工作

时间:2018-01-13 20:35:26

标签: python json

我正在使用datahub

中的这段代码

这实际上是代码,

from datapackage import Package

package = Package('http://datahub.io/core/population/datapackage.json')

# get list of resources:
resources = package.descriptor['resources']
resourceList = [resources[x]['name'] for x in range(0, len(resources))]

data = package.resources[0].read()
print(data)

这是返回的数据 -

Country Name,Country Code,Year,Value
Arab World,ARB,1960,92490932
Arab World,ARB,1961,95044497
Arab World,ARB,1962,97682294
Arab World,ARB,1963,100411076
Arab World,ARB,1964,103239902

现在,这一行

  

data = package.resources [0] .read()

停止了工作。这是错误 - 非表格数据

不支持方法iter / read

然后我在SQL中将它们加载到一个表中,

for i in range(len(data)):
    Val1 = data[i][0]
    Val2= data[i][1]
    Val3= data[i][2]
    Val4= data[i][3]
    cursor.execute("insert into Population_Country (CountryName,CountryCode,Year,PopulationNumber) values (?,?,?,?)", Val1, Val2, Val3, Val4)
    cnxn.commit()

1 个答案:

答案 0 :(得分:1)

不确定它是如何提前的,但如果你看看里面有什么资源:

['validation_report', 'population_csv', 'population_csv_preview', 'population_json', 'population_zip', 'population']

因此0报告为'validation_report',其下一个描述符为:

{'bytes': 598, 'datahub': {'type': 'derived/report'}, 'description': 'Validation report for tabular data', 'dpp:streamedFrom': 'validation_report.json', 'encoding': 'utf-8', 'format': 'json', 'name': 'validation_report', 'path': 'https://pkgstore.datahub.io/core/population/validation_report/data/b6445474af133352488c54ed6c6fd6f2/validation_report.json', 'profile': 'data-resource'}

并且它不是表格式,因此无法使用read()阅读。 据我所知,您需要"population_csv"资源,所以我会这样做:

package.get_resource("population_csv").read()