有没有一种简单的方法来测试一个对象是否存在并且不是空的?我有一些用于获取记录的代码,我需要确保从其他人生成的文件中获取的对象存在并且不为空。
发布于 2019-04-11 04:55:14
假设“空”对象指的是没有记录的对象,我建议这样做:
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-03-23 09:53:01
这是我最终要做的,它不处理“空”对象,但它至少验证了一个对象是否存在:
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)https://stackoverflow.com/questions/55232266
复制相似问题