0
我是Dydra的註冊用戶,並嘗試以編程方式更新存儲庫。儘管我已經登錄,但在嘗試更新存儲庫時出現401錯誤。以下是我的代碼:無法使用Python登錄Dydra
username = 'myUsername'
password = 'myPassword'
URL = 'http://dydra.com/login'
with requests.Session() as s:
resp = s.get(URL)
soup = BeautifulSoup(resp.text)
csrfToken = soup.find('meta',{'name':'csrf-token'}).get('content')
# print csrf_token
payload = {
'account[login]':username,
'account[password]':password,
'csrfmiddlewaretoken':csrfToken,
'next':'/'
}
print payload
p = s.post(URL,data=payload, headers=dict(Referer=URL))
print p.text
r = s.get('http://dydra.com/myUsername/repoName/sparql')
print r.text
for stmt in dataGraph:
dydraSparqlEndpoint = 'http://dydra.com/myUsername/repoName/sparql'
queryStringUpload = 'INSERT DATA {%s %s %s}' % stmt
sparql = SPARQLWrapper(dydraSparqlEndpoint)
sparql.setQuery(queryStringUpload)
sparql.method = 'POST'
sparql.query()
for語句之前的代碼按預期工作。那爲什麼insert語句會導致認證錯誤?我需要在代碼中更改以成功登錄?
我對您使用的API不夠了解,但我沒有看到將用戶憑據連接到sparql對象的位置。我發現你之前使用憑證執行POST,但是不應該將它們也包含在sparql查詢中? –
我的印象是,在Session中執行SPARQL查詢將會處理它。這顯然不起作用。我試圖弄清楚如何在查詢中包含憑據。 – kurious
Joshua是對的,我對Dydra也不熟悉,但是在大多數圖形數據庫中,您需要通過發送請求向您發送身份驗證。你只是試圖發佈插入查詢?這就是Stardog的功能:'resp = requests.post(transaction_endpoint,headers = HEADERS_RDF,data = open_file,auth = SPARQL_AUTH,palsrams = {'graph-uri':graph})' – Artemis