Python中通过字符串动态调用Salesforce bulk upsert方法的问题
解决Salesforce Bulk API动态对象名调用问题
问题根源在于Python的属性访问规则:用.调用属性时,objectName会被当作字面量属性名处理,而不是解析变量存储的"Account"值。要实现动态切换目标对象,需要用getattr()函数来动态获取对应属性。
替换成以下写法即可解决:
objectName = "Account" # 动态获取对应对象的bulk操作实例 target_bulk_object = getattr(sf.bulk, objectName) # 执行upsert操作 target_bulk_object.upsert(dataToSalesforce, externalIdField, batch_size=10000)
也可以简化为一行代码:
getattr(sf.bulk, objectName).upsert(dataToSalesforce, externalIdField, batch_size=10000)
getattr(sf.bulk, objectName)会将objectName变量的实际值作为属性名,从sf.bulk中取出对应的对象(比如这里的Account),以此实现动态切换目标对象的需求。
内容的提问来源于stack exchange,提问作者joebob
相关产品推荐
相关产品推荐

