为什么从资源API获取的跟踪号与数据库中记录的跟踪号不同?

时间:2018-09-11 20:03:38

标签: postgresql solr pylons ckan paster

我在CKAN 2.7.3 API docs中使用了resource_show从特定资源中获取元数据。在我的tracking_summary表中,我有一些资源的跟踪号大于0。但是,当我将resource_show{'include_tracking': True}一起使用时,它同时显示recent和{{1 }}为0。

我在total表中的资源记录如下:

tracking_summary

我验证我已经运行了 url | running_total | recent_views -----------------------------------------------------------------------------------------------------------------+---------------+-------------- /dataset/d5cd38f4-03df-450e-9eb8-4967bc9741da/resource/844625fb-80a9-445c-85e7-5be8f10ec57b/download/test.csv | 1 | 1 paster tracking update的命令。我不知道我现在想念什么。

1 个答案:

答案 0 :(得分:1)

我找到了原因。如果我们查看存储在url表中的tracking_summary,则它不包含http模式和域:http://example.ckan.com。但是,如果我们要从resource表中查询资源,则url将包含完整的http url。另外,当您尝试在应用程序中使用resource_show调用{'include_tracking': True} API时,get_for_resource(cls, url)模型中的Tracking将引用完整的url而不是部分的一。因此,如果我们存储部分,则get_for_resource将在行data = obj.filter_by(url=url).order_by(text('tracking_date desc')).first()处失败。因此,当我们将资源网址保存在tracking_summary中时,应该存储完整的网址,例如:http://example.ckan.com/dataset/<package_id>/resource/<resource_id>/<file_name>