Python Simple Salesforce选择所有字段

mwh*_*hee 5 python salesforce soql simple-salesforce

我正在使用Python Simple-Salesforce通过SOQL查询数据.我知道SOQL语法中不支持"SELECT*",所以我想创建一个Python脚本来收集要插入SELECT语句的所有字段的字符串列表.以下是我描述帐户对象的方式:

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)
Run Code Online (Sandbox Code Playgroud)

如何从下面显示的有序词典中将字段名称提取到字符串列表中?

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'),......

我将使用字符串列表来选择所有字段:

query = sf.query_all("SELECT string_list FROM Account")
Run Code Online (Sandbox Code Playgroud)

小智 10

如何从下面显示的有序词典中将字段名称提取到字符串列表中?

我已经扩展了您的代码以包含解决方案

from simple_salesforce import Salesforce

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

desc = sf.Account.describe()  

# Below is what you need
field_names = [field['name'] for field in desc['fields']]
soql = "SELECT {} FROM Account".format(','.join(field_names))
results = sf.query_all(soql)

# Alternative method to retrieve results
# I don't have any recommendation which to use
results = sf.bulk.Account.query(soql)
Run Code Online (Sandbox Code Playgroud)

我意识到问题是在不久前发布的,只是希望它有一个完整的解决方案.