使用ckanapi(Python)将文件上传到CKAN

时间:2015-12-01 08:24:47

标签: python api ckan

import ckanapi

try:

        ckan = ckanapi.RemoteCKAN(serverurl,
            apikey='myapikeyhere',
            user_agent='useragenthere')

    res = ckan.action.resource_create(
        package_id='2ad3c9de-502c-403a-8b03-bfc619697ff2',
        #url='url',
        #revision_id='revid',
        description='my first upload with CKANAPI',
        upload=open('./upload.csv')
    )

except Exception as e:
        raise Exception(str(e.error_dict))

失败了:

  

字段错误:{u'url':[u'Missing value'],你'__ type':u'Validation Error'}

他们在GitHub的讨论中将url作为必需属性: https://github.com/ckan/ckan/pull/1641

那么url属性的期望值是什么? 如果它期望url到本地文件,它不会托管。 我无法在CKAN上提供该文件的URL,因为尚未创建resourceid。

PS:当为url属性传递任意值时,上传成功。 要求url属性没有意义。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

在我看来,这是CKAN中的一个错误。我在https://github.com/ckan/ckan/issues/2769创建了一个跟踪它的问题。我还在ckanapi上写了一个拉取请求,以便在https://github.com/ckan/ckanapi/pull/74抽象出这个错误。

作为同时的解决方法,您可以将url设置为空字符串。