试图找出一种方法让简单的销售人员只给我列表中的所有字段名称。我想创建与 Select * 在 sql 中所做的几乎相同的事情的 soql 查询。
对于对象中的 obj:
fields = [x["name"] for x in sf[obj].describe()["fields"]]
谢谢
试图找出一种方法让简单的销售人员只给我列表中的所有字段名称。我想创建与 Select * 在 sql 中所做的几乎相同的事情的 soql 查询。
对于对象中的 obj:
fields = [x["name"] for x in sf[obj].describe()["fields"]]
谢谢
对象中的字段名称列表可以实现如下:
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”字段名称的“我最喜欢的网站”字段标签)
#!/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)
此方法将返回一个查询字符串,其中包含传入对象的所有字段。以及用户有权访问的所有字段。
public static string getFullObjectQuery(String sObjectName){
Schema.SObjectType convertType = Schema.getGlobalDescribe().get(sObjectName);
Map<String,Schema.sObjectField> fieldMap = convertType.getDescribe().Fields.getMap();
Set<String> fields = fieldMap.keySet();
String Query = 'SELECT ';
for(String field: fields){
Schema.DescribeFieldResult dfr = fieldMap.get(field).getDescribe();
if(dfr.isAccessible()){
Query += field + ',';
}
}
Query = query.SubString(0,Query.length() - 1);
Query += ' FROM ' + sObjectName;
return Query;
}