我正在尝试更新 CKAN 的一个实例中的资源。我正在使用 demo.ckan.org 进行一些测试。
我可以使用 curl 为数据集创建和更新资源,但是使用 python 我无法做到这一点。
我的起点是这个链接: http://docs.ckan.org/en/latest/maintaining/filestore.html#filestore-api
这是代码:
import requests
requests.post('http://0.0.0.0:5000/api/action/resource_create',
data={"package_id":"my_dataset"},
headers={"X-CKAN-API-Key": "21a47217-6d7b-49c5-88f9-72ebd5a4d4bb"},
files=[('upload', file('/path/to/file/to/upload.csv'))])
我的 curl 代码工作正常,所以我尝试调整它:
curl -X POST http://demo.ckan.org/api/3/action/resource_update -d '{"id":"5b75fdf2-df9c-4a4f-bb28-d78ea7bc4e48", "url": "http://82.98.156.2/ckan_api/public_html/restaurantes.geojson", "name": "Better Restaurants", "format":"GEOJSON", "description":"Description of the resource"}' -H "Authorization: 97caad21-8632-4372-98fe-a24cdcaa90dc"
这应该是python中的代码:
resource_dict = {
'id': '5b75fdf2-df9c-4a4f-bb28-d78ea7bc4e48',
'name':'REstaurantes con PYTHON',
'url':'http://82.98.156.2/ckan_api/public_html/restaurantes.geojson',
'description':'Description in PYTHON'
}
resource_dict = urllib.quote(json.dumps(resource_dict))
requests.post('http://demo.ckan.org/api/3/action/resource_update',
data=resource_dict,
headers={"Authorization: 97caad21-8632-4372-98fe-a24cdcaa90dc"})
我找到了这个旧链接: Create CKAN dataset using CKAN API and Python Requests library
最后它建议添加一些信息,但我可以想办法去做。
有什么建议吗???
最佳答案
不要为 python 请求而烦恼 - 在 python 中使用优秀的 ckanapi 是最简单的图书馆。例如
import ckanapi
ckan = ckanapi.RemoteCKAN('http://demo.ckan.org/', apikey='97caad21-8632-4372-98fe-a24cdcaa90dc', user_agent='ckanapi so test')
resource_dict = {
'id': '5b75fdf2-df9c-4a4f-bb28-d78ea7bc4e48',
'package_id': 'cdcf576d-0b09-4df0-a506-61a7142d2b8f',
'name':'Restaurantes con PYTHON',
'url':'http://82.98.156.2/ckan_api/public_html/restaurantes.geojson',
'description':'Description in PYTHON',
'format':'GEOJSON'
}
ckan.action.resource_update(**resource_dict)
关于python - 使用python更新CKAN中的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41270003/