ckan api的客户端
ckan-api-client的Python项目详细描述
这个包为ckanapi提供了一个改进的客户端。
具体来说,它包括:
- 一个low-level客户机,它几乎只是一个包装器 http调用,处理序列化和异常引发。
- 一个high-level客户端,试图使其更容易/更安全地执行 对ckan目录的某些操作。
- 一个同步客户端,用于提供一些自动化 用于将数据集集合同步到目录中的任务 (通常称为“收获”)。
除此之外,它还试图解决一些常见问题 使用这个api,比如不一致和错误,试图使 当然问题早就被发现了。
安装
最新稳定版本,来自pypi:
pip install ckan-api-client
来自Git Master的最新消息:
pip install http://git.io/ckan-api-client.tar.gz
示例用法
>>>fromckan_api_client.high_levelimportCkanHighlevelClient>>>fromckan_api_client.objectsimportCkanDataset>>>client=CkanHighlevelClient('http://127.0.0.1:5000',api_key='e70c15cc-2f07-4845-8c6e-3607df88e905')
我们的干净实例上还没有数据集:
>>>client.list_datasets()[]
让我们创建一个新的数据集:
>>>new_dataset=client.create_dataset(CkanDataset({...'name':'example-dataset',...'title':'My example dataset'}))>>>new_datasetCkanDataset({'maintainer':u'','name':u'example-dataset','author':u'','author_email':u'','title':'My example dataset','notes':u'','owner_org':None,'private':False,'maintainer_email':u'','url':u'','state':u'active','extras':{},'groups':[],'license_id':u'','type':u'dataset','id':u'dfe41b34-5114-47be-8d94-759f942938fc','resources':[]})>>>client.list_datasets()[u'dfe41b34-5114-47be-8d94-759f942938fc']
现在,让我们更改其标题:
>>>new_dataset.title='NEW TITLE'>>>client.update_dataset(new_dataset)CkanDataset({'maintainer':u'','name':u'example-dataset','author':u'','author_email':u'','title':'NEW TITLE','notes':u'','owner_org':None,'private':False,'maintainer_email':u'','url':u'','state':u'active','extras':{},'groups':[],'license_id':u'','type':u'dataset','id':u'dfe41b34-5114-47be-8d94-759f942938fc','resources':[]})
拿回来:
>>>client.get_dataset('dfe41b34-5114-47be-8d94-759f942938fc')(sameresultasabove)
删除:
>>>client.wipe_dataset(new_dataset.id)
再次尝试获取数据集将引发“模拟”404:ckan 不会删除数据集,只会将其标记为“state:deleted”, 对于管理用户,对于匿名用户,返回403。我们 希望提供更多的一致性,因此我们引发异常。
如果really想要获取已删除的数据集,请添加 allow_deleted=True。
>>>client.get_dataset('dfe41b34-5114-47be-8d94-759f942938fc')HTTPError:HTTPError(404,'(logical) dataset state is deleted',original=None)