SOQL 쿼리하기
Salesforce REST API에서 SOQL 쿼리는 GET 방식을 사용하여 데이터를 조회할 수 있습니다.
쿼리문의 형식은 다음과 같습니다.
<instanceUrl>/services/data/vXX.x/query?q=<URL Encoded SOQL Query String>
vXX.x는 API의 버전을 의미하며, 이 설명에서는 v58.0을 적용하였습니다.
-
Database 모듈의 data method 영역에 메소드를 추가합니다.
HttpGet 메소드를 사용합니다.
def query(connInfo, soql): try: headers = { 'Content-Type' : 'application/x-www-form-urlencoded', 'Authorization' : 'Bearer %s' % connInfo.get('accessToken') } encodedSoql = urllib.parse.quote_plus(soql) url = '%s/services/data/v58.0/query?q=%s' % (connInfo.get('instanceUrl'), encodedSoql) req = requests.Request('GET', url, headers=headers) prepped = req.prepare() result = call(prepped) return result except Exception as e: print('Exception -> ', e) -
sample.py 모듈에 아래의 메소드를 추가합니다.
def querySample(connInfo): try: query = "SELECT Id, Name FROM Account LIMIT 10" result = Database.query(connInfo, query) print(json.dumps(result, indent=2)) except Exception as e: print('Exception -> ', e) -
sample.py 모듈의
main메소드에 아래의 내용을 추가합니다.# Data function block begin querySample(connInfo) # Data function block end -
터미널에서
python sample.py이라고 명령을 실행해 봅니다.아래와 같은 형식의 데이터가 표시되면 정상적으로 동작을 하는 것입니다.
Result{ "totalSize": 10, "done": true, "records": [ { "attributes": { "type": "Account", "url": "/services/data/v58.0/sobjects/Account/001***************" }, "Id": "001***************", "Name": "*****" }, ... { "attributes": { "type": "Account", "url": "/services/data/v58.0/sobjects/Account/001***************" }, "Id": "001***************", "Name": "*****" } ] }