ckan api的客户端

ckan-api-client的Python项目详细描述


这个包为ckanapi提供了一个改进的客户端。

具体来说,它包括:

  • 一个low-level客户机,它几乎只是一个包装器 http调用,处理序列化和异常引发。
  • 一个high-level客户端,试图使其更容易/更安全地执行 对ckan目录的某些操作。
  • 一个同步客户端,用于提供一些自动化 用于将数据集集合同步到目录中的任务 (通常称为“收获”)。

除此之外,它还试图解决一些常见问题 使用这个api,比如不一致和错误,试图使 当然问题早就被发现了。

文档

文档可在阅读文档时获得:

http://ckan-api-client.readthedocs.org

github页面上当前提供镜像副本:

https://opendatatrentino.github.io/ckan-api-client/

安装

最新稳定版本,来自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)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何格式化servlet响应以生成HTML中“accept”参数可接受的媒体类型?   java如何使用JasperReports为单个报表传递多个结果集?   EclipseVBA到JAVA链接   java如何为Gradle中的不同配置配置PMD规则集?   在给出正确答案之前,是否要求回答?Java Eclipse   java查询SearchView崩溃(尝试实现SearchView操作栏)   java为什么跳过我的IF语句?   java循环以获取与输入值最接近的对象   java默认构造函数真正做什么?   java我需要测试类中的测试方法吗   java如何在代码中滚动滚动窗格?   java我需要获得发布和调试证书指纹的帮助   javascript如何在JS中取消Java“DES/CBC/PKCS5Padding”?