SODA API를 사용하여 Socrata 데이터 집합의 모든 행을 프로그래밍 방식으로 삭제하려고합니다. 데이터 세트 자체를 삭제하고 싶지는 않습니다. 왜냐하면 그 데이터 세트를 재구성하기 위해 많은 작업을해야하기 때문입니다. 수천 개의 행에 대해이 작업을 수행하는 것은 매우 느립니다.SODA API가있는 데이터 집합의 모든 행 삭제
이전에는 각 행을 천천히 반복하여 someone on Twitter까지 각각을 삭제하고 행이없는 업서 트를 제안했습니다. 나는 이것을 구현하고 그것이 효과가 있다고 믿지만 지금은 그렇지 않다.
headers = {'X-App-Token': config.app_token}
headers['Content-Type'] = 'application/json'
r = requests.put(config.dataset + '.json', data='[ ]', headers=headers, auth=config.auth)
print r.status_code, r.text
출력은 다음과 같습니다 :
200 {
"By RowIdentifier" : 0,
"Rows Updated" : 0,
"Rows Deleted" : 0,
"Rows Created" : 0,
"Errors" : 0,
"By SID" : 0
}
(그래서 나는 그것이 문제가 인증, 권한 부여 등 함께 할 수없는 말을 안전하다고 생각
여기에 코드의 관련 비트입니다 ? 행을 업서 트하는 다른 함수는 잘못되었으므로 잘못된 데이터 집합 URL이나 다른 데이터에도 문제가되지 않습니다.)
또한 앞뒤 행 수를 쿼리하고 t 여기에 변화가 없습니다. 여전히 수천 개의 행이 있습니다.
내가 알 수있는 한, Replacing rows in bulk에 대한 API 문서를 따르고 있습니다.
내가 생각할 수있는 유일한 점은 버그로 인해 같은 rowid를 가진 여러 행이 있다는 것입니다.
rowid
확실히 행 식별자로 설정됩니다 :
이제 행 식별자가 해야하는 주어진 여기에 편집
은 일부 중복 행 식별자 "essentially act the same way as primary keys"로 시작합니다. 이 버그인지 궁금해 하시거나 뭔가 잘못되었습니다. 게시 코드는 다음과 같습니다 : 여기
def publishDataset(rows):
r = requests.post(config.dataset, data=simplejson.dumps(rows), headers = headers, auth=config.auth)
j = r.json()
print
if r.status_code != 200:
raise RuntimeError ("%d Socrata error: %s" % (r.status_code, j['message']))
return j
전체 코드 : 회신이 지연 https://github.com/stevage/meshlium-soda
어, 작동하지 않습니다. 하지만 그 의미는 혼란 스럽습니다. 1. [PUT documentation] (http://dev.socrata.com/publishers/replace.html)은 완전히 잘못되었으므로 실제로 데이터 세트 내용을 대체 할 방법이 없습니까? 2. 행 ID없이 DELETE를 사용하면 문서화되지 않습니다. 3. 자원 자체 대신 자원의 * 내용을 삭제하기 위해 DELETE를 사용하면 표준이 아닐 수도 있습니다. 4. 도대체 왜 전에도 작동 했습니까? :) –