Python 3 简单的 Salesforce 测试以查看对象是否存在并包含数据

Python 3 Simple Salesforce Testing to see if an object exists and contains data

是否有一种简单的方法可以使用简单的 salesforce 来测试对象是否存在且不为空?我有一些用于获取记录的代码,我需要确保我从其他人生成的文件中获取的对象存在并且不为空。

这是我最后做的事情,它不处理 "empty" 个对象,但它至少验证了一个对象是否存在:

try :
    getattr(sf,nextObj).describe()
except (SalesforceGeneralError, SalesforceMoreThanOneRecord, SalesforceMalformedRequest, SalesforceExpiredSession, SalesforceRefusedRequest, SalesforceResourceNotFound) as e :
    print(e.content[0]['message'] +', writing next object and ending')
    updateNextObj(nextObj, s3NextObjDestination)
    sys.exit(1)

假设 "empty" object 表示一个没有记录的对象,我建议如下:

def checkSalesforceObject(objName):
    try:
        getattr(sf,objName).metadata()
        a = len(sf.query_all('SELECT Id FROM {}'.format(objName))['records'])
        return {'IsObject':True,'Records':a}
    except:
        a = sys.exc_info()
        return {'IsObject':not("Resource {} Not Found".format(objName) in str(a[1])),'Records':None}

所以 checkSalesforceObject('Contact') 会 return 像 {'IsObject': True, 'Records': 21}

checkSalesforceObject('Contct')会return{'IsObject': False, 'Records': None}

如果不关心存在的对象与没有记录的对象之间的细微差别,则可以进一步修改此函数以简单地 return true 对于任何不存在的对象不存在或没有记录。

def objectInUse(objName):
    try:
        getattr(sf,objName).metadata()
        if len(sf.query('SELECT Id FROM {} LIMIT 1'.format(objName))['records']) == 0:
            return False
        else:
            return True
    except:
        a = sys.exc_info()
        if "Resource {} Not Found".format(objName) in str(a[1]):
            return False