In part 2 of the simple-salesforce tutorial series, we are going to learn how to query records by passing SOQL and SOSL statements.
Buy Me a Coffee? Your support is much appreciated!
PayPal Me: https://www.paypal.me/jiejenn/5
Venmo: @Jie-Jenn
Source Code:
import json
import pandas as pd
from simple_salesforce import Salesforce, SalesforceLogin, SFType
loginInfo = json.load(open('login.json'))
username = loginInfo['username']
password = loginInfo['password']
security_token = loginInfo['security_token']
domain = 'login'
session_id, instance = SalesforceLogin(username=username, password=password, security_token=security_token, domain=domain)
sf = Salesforce(instance=instance, session_id=session_id)
values = ['Energy', 'Banking']
querySOQL = """SELECT Id, Name, Type, Industry FROM Account WHERE Industry IN('{0}')""".format("','".join(values))
# query records method
response = sf.query(querySOQL)
lstRecords = response.get('records')
nextRecordsUrl = response.get('nextRecordsUrl')
while not response.get('done'):
response = sf.query_more(nextRecordsUrl, identifier_is_url=True)
lstRecords.extend(response.get('records'))
nextRecordsUrl = response.get('nextRecordsUrl')
df_records = pd.DataFrame(lstRecords)
# query account and opportunity records
querySOQL = """SELECT Id, Name, StageName, Account.Name, Account.Type, Account.Industry FROM Opportunity"""
response = sf.query(querySOQL)
lstRecords = response.get('records')
nextRecordsUrl = response.get('nextRecordsUrl')
while not response.get('done'):
response = sf.query_more(nextRecordsUrl, identifier_is_url=True)
lstRecords.extend(response.get('records'))
nextRecordsUrl = response.get('nextRecordsUrl')
df_records = pd.DataFrame(lstRecords)
dfAccount = df_records['Account'].apply(pd.Series).drop(labels='attributes', axis=1, inplace=False)
dfAccount.columns = ('Account.{0}'.format(name) for name in dfAccount.columns)
df_records.drop(labels=['Account', 'attributes'], axis=1, inplace=True)
dfOpptyAcct = pd.concat([df_records, dfAccount], axis=1)
dfOpptyAcct.to_csv('Oppty to Acct.csv', index=False)
"""
SOSL Query Call
"""
records = sf.search('FIND {United Oil Installations} RETURNING Opportunity (Id, Name, StageName)')