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

Python 3.x Python3简单的Salesforce测试,查看对象是否存在并包含数据,python-3.x,simple-salesforce,Python 3.x,Simple Salesforce,使用simple salesforce是否有一种简单的方法来测试对象是否存在并且不是空的?我有一些用于获取记录的代码,我需要确保从其他人生成的文件中获取的对象存在且不为空。以下是我最终要做的事情,它不处理“空”对象,但至少要验证对象是否存在: try : getattr(sf,nextObj).describe() except (SalesforceGeneralError, SalesforceMoreThanOneRecord, SalesforceMalformedRequest

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

以下是我最终要做的事情,它不处理“空”对象,但至少要验证对象是否存在:

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)
假设“空”对象是指没有记录的对象,我建议如下:

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')
将返回类似
{'IsObject':True,'Records':21}

checkSalesforceObject('Contct')
将返回
{'IsObject':False,'Records':None}

如果不考虑现有对象与无记录对象之间的细微差别,则可以进一步修改此函数,以便为不存在或无记录的任何对象返回
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

请分享一段代码。我实际上没有,因为我无法从简单的salesforce模块中确定我应该从中看到什么。让我看看是否能找出一些代码并发布出来。听起来不错。除非我遗漏了什么,否则如果Salesforce对象存在,根据定义它不是空的(它至少有一个Id,以及任何需要的字段)。但是给我们看一下这个片段,我们会尽力帮忙的!发布了我最终使用的代码。它适用于不存在的对象,但不处理“空”对象。稍后再来。所谓“空”对象,是指没有任何记录的对象吗?是的,是没有任何记录的对象。太好了,谢谢您的确认。请查看我的答案,如果它能解决您的问题,请“接受为最佳答案”