You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python CKANAPI向demo.ckan.org上传文件的技术问询

如何用CKANAPI向demo.ckan.org上传基础数据集文件

嘿,我看你已经在尝试用CKANAPI往demo.ckan.org上传数据集了,代码框架已经有了,不过还有一些细节需要补全和调整,我帮你完善了完整的实现方案,包括创建数据集和上传文件资源的全流程:

from ckanapi import RemoteCKAN

# 配置参数,记得替换成你的实际信息
api_key = "你的API密钥"  # 从demo.ckan.org个人设置中获取真实API密钥
dataset_name = "my-first-test-dataset"  # 唯一标识:小写、无空格、不重复
dataset_title = "我的第一个CKAN测试数据集"

# 初始化远程CKAN连接
demo = RemoteCKAN(address='https://demo.ckan.org', apikey=api_key)

# 定义数据集元数据,修正了原代码里的一些格式问题
dataset_dict = {
    "name": dataset_name,
    "title": dataset_title,
    "private": False,
    "author": "Aaron",
    "author_email": "none_of_your_business@example.com",  # 修正了邮箱格式错误
    "maintainer": "Aaron",
    "license_id": "cc-by",  # 替换成合法的许可证ID,比如cc-by、mit等
    "notes": "这是一个通过CKANAPI创建和上传的测试数据集",
    "version": "1.0",
    "state": "active"
}

try:
    # 第一步:创建数据集
    created_dataset = demo.call_action('package_create', dataset_dict)
    print(f"✅ 数据集创建成功!ID: {created_dataset['id']}")

    # 第二步:上传本地文件作为数据集资源
    with open("test-data.csv", "rb") as file:  # 替换成你的本地文件路径
        resource_info = {
            "package_id": created_dataset['id'],
            "name": "测试数据文件",
            "description": "数据集对应的基础数据文件",
            "format": "CSV"  # 匹配你的文件格式,比如JSON、XLSX等
        }
        # 调用资源上传接口
        created_resource = demo.call_action(
            'resource_create',
            resource_info,
            files={'upload': file}
        )
        print(f"✅ 资源上传成功!资源ID: {created_resource['id']}")

except Exception as e:
    print(f"❌ 操作失败:{str(e)}")

关键注意事项:

  • API密钥:必须使用demo.ckan.org账号对应的真实API密钥,在个人账号设置页面可以找到,没有密钥会导致权限不足。
  • 数据集名称唯一性:name字段是数据集的唯一标识,必须是小写、无空格的字符串,如果demo站已经有同名数据集,创建会失败。
  • 格式修正:原代码里的邮箱格式错误(@.com),许可证用"None"也不符合CKAN规范,建议使用官方提供的许可证ID。
  • 文件路径:上传文件时要确保本地文件存在,并且路径正确,format字段要和文件实际格式一致,方便CKAN识别。
  • 错误捕获:添加了try-except块可以帮你快速定位问题,比如密钥无效、名称重复、文件不存在等常见问题。

内容的提问来源于stack exchange,提问作者AaronV77

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:52:10