我正在使用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()
答案 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()