2014-11-04 2 views
0

Socrata는 공식 Python API가 없음을 확인합니다. 나는 이것이 공식 API 지원이있는 언어 중 하나를 배우는 것이 가치가있는 어떤 이유가 있는지 알고 싶습니다. 즉, 파이썬 (및 팬더와 같은 관련 패키지)이 데이터 논쟁을위한 최선의 선택이 아닙니다.Socrata SODA and Python

data.lacity.gov와 같은 사이트를보고 싶습니다. 브라우저에서 보는 데이터베이스는 날짜 나 기타 매개 변수를 설정하지 않습니다. 나는 몇 년 또는 몇 년이 걸릴 것으로 예상되는 몇 달 간의 결과를 얻는다. 이로 인해 비추천 프로젝트의 새로운 포크와 별개로 API와 Python 지원이 부족하게되었습니다. 나는 API가이 높은 가시성을 허용한다고 가정하고 있습니다. .. 우리는 아직 파이썬 라이브러리가없는 이유는 this thread on Github을 확인 할 수 있습니다에 대해 조금 더 배경에 대 한 클럽

답변

4

에서

올드 가이.

짧은 버전은 - 특히 파이썬에 잘못된 점이 있거나 그 점을 싫어하기 때문에 (나는 위대한 언어라고 생각합니다), 우리가 사내가없는 것이 더 낫습니다 지금 당장은 하나의 기술을 구축해야합니다. 나는 글을 쓰고 싶지만 솔직히 파이썬 티 스타보다 루비스트가 더 많아서 모든 사람들을 불행하게 만들 것입니다. :)

그런데 Socrata API를 직접 사용하면 Requests 또는 urllib2과 같은 것을 쉽게 사용할 수 있습니다. 예를 들어, 여기에 [data.lacity.org 건물 검사 데이터 세트]에 대한 요청 라이브러리를 사용하여 간단한 전화를 거는 방법은 다음과 같습니다

import requests 
r = requests.get(
    "https://data.lacity.org/resource/9w5z-rg2h.json?$where=within_circle(lat_lon, 34.053714, -118.242653, 1000)", 
    headers={"X-App-Token":"[YOUR APP TOKEN]"} 
) 
r.json()[0] # {u'permit_status': u'Permit Finaled', u'inspection_result': u'Partial Inspection', u'lat_lon': {u'latitude': u'34.04866', u'needs_recoding': False, u'longitude': u'-118.23787'}, u'address': u'100 S ALAMEDA ST', u'inspection': u'Excavation/Setback/Form/Re-Bar', u'inspection_date': u'2013-08-27T00:00:00', u'permit': u'13016-30000-09747'} 

당신은 요청과 함께 사용할 structure your own SoQL query해야합니다,하지만 많이 있습니다 방법에 관한 자료는 dev.socrata.com에 있습니다.

+1

내가 궁금 해서요. 나는 또한 일부 데이터를 시각화하기 위해 Python, Pandas 및 Bokeh와 함께 SODA API를 사용하는 방법에 대한 간단한 예를 썼습니다. 그것은 당신의 골목을 따라있을 수 있습니다 : http://dev.socrata.com/consumers/examples/data-visualization-with-python.html – chrismetcalf

+0

아주 좋은 포인터와 나는 설명을 주셔서 감사합니다. 파이썬 옵션을 살펴볼 것이다. – OldGuyInTheClub

0

이 답변이 될 자격이 있는지 모르겠지만 최근에 SODA와 상호 작용할 파이썬을 작성했으며 (초기 초기 혼란을 겪은 후) "파이썬 API"가 필요 없다는 것을 알았습니다. https://github.com/stevage/meshlium-soda

샘플 :

headers = { 
    'X-App-Token': config.app_token, 
    'Content-Type': 'application/json' 
    } 

...

params = {#'$select': 'max(timestamp)', 
      '$limit': 1, 
      '$order': 'timestamp DESC', 
      '$where': 'timestamp IS NOT NULL'} 
    r = requests.get(config.dataset + '.json', params=params, headers=headers, auth=config.auth) 
    if r.status_code != 200: 
    raise RuntimeError('Can''t retrieve latest timestamp.' + r.text) 

...

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 

나는 확실히 요청 라이브러리를 추천 여기에 내 코드입니다.