问:Simple-Salesforce进行动态soql查询

时间:2017-10-09 15:01:06

标签: python salesforce simple-salesforce

试图想办法让简单的salesforce给我一个列表中的所有字段名称。我想创建soql查询,它几乎与sql中的Select *相同。

对象中的obj:

fields = [x["name"] for x in sf[obj].describe()["fields"]]

感谢

3 个答案:

答案 0 :(得分:0)

此方法将返回一个查询字符串,其中包含传入的对象的所有字段。以及用户有权访问的所有字段。

@Bean
public BatchConfigurer configurer(){
    return new CustomBatchConfigurer();
}

答案 1 :(得分:0)

#!/usr/bin/env python3

import argparse
import os
import simple_salesforce

parser = argparse.ArgumentParser()
parser.add_argument('--sandbox', action='store_true',
                    help='Use a sandbox')
parser.add_argument('sfobject', nargs='+', action='store',
                    help=('Salesforce object to query (e.g. Contact)'))
args = parser.parse_args()

sf = simple_salesforce.Salesforce(
    username       = os.getenv('USERNAME'),
    password       = os.getenv('PASSWORD'),
    security_token = os.getenv('SECURITY_TOKEN'),
    sandbox        = args.sandbox)

for sfobject in args.sfobject:
    print(sfobject)
    fields = [x['name'] for x in getattr(sf, sfobject).describe()['fields']]
    print(fields)

答案 2 :(得分:0)

可以通过以下方式获得对象中字段名称的列表:

def getObjectFields(obj):
    fields = getattr(sf,obj).describe()['fields']
    flist = [i['name'] for i in fields]
    return flist

getObjectFields('Contact')

您要获得SELECT *效果的查询将如下所示:

sf.query_all('SELECT {} FROM Contact LIMIT 10'.format(','.join(getObjectFields('Contact'))))

相关说明:

如果有帮助,可以按以下方式获得标签/名称对的字典:

def getObjectFieldsDict(obj):
    fields = getattr(sf,obj).describe()['fields']
    fdict = {}
    for i in fields:
        fdict[i['label']] = i['name']
    return fdict

getObjectFieldsDict('Contact')

我发现这对于找出带有不符合标准格式的标签的字段名称很有用(例如,“ Favorite_Website__c”字段名称为“我的最爱网站”字段标签)