3

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

4

2 回答 2

2

假设“空”对象意味着没有记录的对象,我会建议这样的事情:

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
于 2019-04-10T20:55:14.157 回答
0

这是我最终做的事情,它不处理“空”对象,但它至少验证了一个对象是否存在:

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)
于 2019-03-23T01:53:01.293 回答