Python Simple Salesforce Select All Fields

Viewed 11906

I'm using Python Simple-Salesforce to query data via SOQL. I know that "SELECT *" is not supported in SOQL syntax, so I want to create a Python script to gather a string list of all fields to insert into the SELECT statement. Below is how I am describing the Account Object:

from simple_salesforce import Salesforce
from simple_salesforce import SFType

#(credentials hidden)
sf = Salesforce(username=username, password=password,
                security_token=security_token, sandbox=True, 
                client_id='mwheeler App')

desc = sf.Account.describe()  
print(desc)

How should I extract the field names into a string list from the Ordered Dictionary shown below?

desc:

OrderedDict([('actionOverrides', []), ('activateable', False), ('childRelationships', [OrderedDict([('cascadeDelete', False), ('childSObject', 'Account'), ('deprecatedAndHidden', False), ('field', 'ParentId'), ('junctionIdListNames', []), ('junctionReferenceTo', []), ('relationshipName', 'ChildAccounts'), ('restrictedDelete', False)]), OrderedDict([('cascadeDelete', True), ('childSObject', 'AccountCleanInfo'), ('deprecatedAndHidden', False), ('field', 'AccountId'), ......

I will be using the string list to select all fields:

query = sf.query_all("SELECT string_list FROM Account")
3 Answers
# provide credential information for Salesforce Session Object
username = 'username'
password = 'password'
security_token = 'security_token'
domain = 'login'

# Create salesforce session
sf = Salesforce(username=username,
                password=password,
                security_token=security_token,
                domain=domain)

# Get list of fields for TABLE
fields = [field.get('name') for field in getattr(sf, TABLE).describe().get('fields')]

# Concat fields ready for inclusion in query string
fields = ',\n'.join(fields)

# Convert into SOQL query
soql = f"SELECT \n{fields} \nFROM {TABLE}"
Related