python - 从 python 连接到 sparql 端点时出现授权错误
问题描述
我正在尝试从 jupyter notebook 连接到私有 SPARQL 端点。我是 python 新手,我不确定我做错了什么。我提供了正确的登录凭据,但是当我尝试处理结果时,我收到了一个我无法解释的错误。
我通过从浏览器访问端点并手动运行查询进行了检查。它工作正常,我也得到了没有错误的响应。我不确定我需要在 request.py 和 Wrapper.py 中更改什么来处理此错误。
预先感谢您的帮助。欣赏它。
sparql = SPARQLWrapper(" sparql address")
sparql.setHTTPAuth(DIGEST)
sparql.setCredentials("username", "pswd")
sparql.setQuery("""
--query--
""")
sparql.setReturnFormat(CSV)
results = sparql.query().convert()
---------------------------------------------------------------------------
HTTPError Traceback (most recent call last)
/tmp/ENTER/lib/python3.7/site-packages/SPARQLWrapper/Wrapper.py in _query(self)
765 else:
--> 766 response = urlopener(request)
767 return response, self.returnFormat
/tmp/ENTER/lib/python3.7/urllib/request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context)
221 opener = _opener
--> 222 return opener.open(url, data, timeout)
223
/tmp/ENTER/lib/python3.7/urllib/request.py in open(self, fullurl, data, timeout)
530 meth = getattr(processor, meth_name)
--> 531 response = meth(req, response)
532
/tmp/ENTER/lib/python3.7/urllib/request.py in http_response(self, request, response)
640 response = self.parent.error(
--> 641 'http', request, response, code, msg, hdrs)
642
/tmp/ENTER/lib/python3.7/urllib/request.py in error(self, proto, *args)
568 args = (dict, 'default', 'http_error_default') + orig_args
--> 569 return self._call_chain(*args)
570
/tmp/ENTER/lib/python3.7/urllib/request.py in _call_chain(self, chain, kind, meth_name, *args)
502 func = getattr(handler, meth_name)
--> 503 result = func(*args)
504 if result is not None:
/tmp/ENTER/lib/python3.7/urllib/request.py in http_error_default(self, req, fp, code, msg, hdrs)
648 def http_error_default(self, req, fp, code, msg, hdrs):
--> 649 raise HTTPError(req.full_url, code, msg, hdrs, fp)
650
HTTPError: HTTP Error 401: Unavailable
During handling of the above exception, another exception occurred:
Unauthorized Traceback (most recent call last)
<ipython-input-6-14dac11c9be4> in <module>
1 sparql.setReturnFormat(CSV)
2
----> 3 results = sparql.query().convert()
4
5 #for result in results["results"]["bindings"]:
/tmp/ENTER/lib/python3.7/site-packages/SPARQLWrapper/Wrapper.py in query(self)
796 @rtype: L{QueryResult} instance
797 """
--> 798 return QueryResult(self._query())
799
800 def queryAndConvert(self):
/tmp/ENTER/lib/python3.7/site-packages/SPARQLWrapper/Wrapper.py in _query(self)
772 raise EndPointNotFound(e.read())
773 elif e.code == 401:
--> 774 raise Unauthorized(e.read())
775 elif e.code == 500:
776 raise EndPointInternalError(e.read())
Unauthorized: Unauthorized: access is denied due to invalid credentials (unauthorized). Check the credentials.
PS:我将身份验证更改为 BASIC,并将登录名和密码中的双引号替换为单引号,现在我得到了 json 响应。我不确定是身份验证类型是解决方案还是服务器过载,因此我没有得到响应。
解决方案
推荐阅读
- sql-server - 使用存储过程设置变量而不打印输出
- r - “R CMD check”在使用“devtools::test()”时抛出警告,但允许“test()”,但需要使用完整的函数名
- excel - Countif 参考不同的工作表
- c# - 如何遍历所有 Assets 文件夹和子文件夹并列出此文件夹中的所有预制件?
- django - 如何在多个模板的基本模板中使用 views.py 中的变量?
- javascript - JavaScript 盒子游戏 - 内部 div 超出外部 div 边界
- java - AB 或 BA 但 DRY
- python-3.x - 在给定开始和结束时间的情况下计算并发会话
- python-attrs - Python Attr:使用其他属性的转换器?
- asp.net-core - 使用 Saml2p 与 IdentityServer4 集成 SAML