Python Simple Salesforce选择所有字段

Python Simple Salesforce选择所有字段,python,salesforce,soql,simple-salesforce,Python,Salesforce,Soql,Simple Salesforce,我正在使用Python Simple Salesforce通过SOQL查询数据。我知道SOQL语法不支持“SELECT*”,所以我想创建一个Python脚本来收集要插入SELECT语句的所有字段的字符串列表。下面是我如何描述Account对象的: from simple_salesforce import Salesforce from simple_salesforce import SFType #(credentials hidden) sf = Salesforce(username=

我正在使用Python Simple Salesforce通过SOQL查询数据。我知道SOQL语法不支持“SELECT*”,所以我想创建一个Python脚本来收集要插入SELECT语句的所有字段的字符串列表。下面是我如何描述Account对象的:

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)
我应该如何从如下所示的有序字典中将字段名提取到字符串列表中

说明

OrderedDict([('actionOverrides',[]),('activateable',False),('childRelationships',[cascadeDelete',False],('childSObject','Account'),('DeprecatedHidden',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")

可以在此处看到此python库描述调用:

如果我是你,我会追查他们最初是如何得到这本订购词典的

您可以从这一行中看到:

他们从这里使用基本URL:

因此,您可以在工作台中进行相同的调用:

通过简单的谷歌搜索,您可以找到一些关于如何遍历字典的有用示例,以下是一些示例:

只要你知道你在寻找什么,浏览字典应该是相当容易的

警告一句,根据我的经验,查询所有字段对于企业框架来说是非常好的,但是有些对象并不是设计为在一个SOQL查询中包含所有字段的

有关SOQL限制,请参阅本页:

希望这有帮助

我应该如何从如下所示的有序字典中将字段名提取到字符串列表中

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

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)
我意识到这个问题是不久前发布的,只是希望它有一个完整的解决方案