使用 python simplesalesforce 包的 Salesforce 批量 API



我在python 3中使用simple-salesforce python包。根据文档,我应该能够使用以下语法批量更新记录:

data = [{'Id': '0000000000AAAAA', 'Email': 'examplenew@example.com'}, {'Id':'0000000000BBBBB', 'Email': 'testnew@test.com'}]
sf.bulk.Contact.update(data)

但是,我实现的简单销售人员实例无法识别

sf.bulk.Custom_Object__c

当我尝试执行时:

sf.bulk.Custom_Object__c.update(data)

我收到此错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-126-b287358940fc> in <module>()
----> 1 sf.bulk.Custom__bject__c.update(data)
AttributeError: 'SFType' object has no attribute 'Custom_Object__c'

之前有没有其他人使用简单的 salesforce python 包并遇到过这个问题?

您应该使用Salesforce()函数登录而不是SFType()。这里有一个例子:

1. 登录

import pandas as pd
from simple_salesforce import Salesforce
sf = Salesforce(username='my_username', password='my_password', security_token = 'my_token', domain = 'login')

2. 数据

如果您使用pandas来管理数据,则需要在更新之前使用df.to_dict('records')方法将df转换为字典列表

fake_df = pd.DataFrame({'Id': ['rowID1', 'rowID2'], 'CustomField__c':[1,2]})
fake_dict = fake_df.to_dict('records')

3. 更新

尽管您可以使用sf.bulk.MyCustomObject__c来设置要更新的 SFDC 对象的名称,但我更喜欢sf.bulk.__getattr__(objectName)这样您就可以在函数中重用代码并轻松切换对象。

objectName = 'MyCustomObject__c'
results = sf.bulk.__getattr__(objectName).update(fake_dict, batch_size = 10000)

我经常使用sf.bulk.Custom_Object__c.update(data),但从未遇到过这个问题。我建议尝试以下故障排除方法:

  • 在 Salesforce 中,转到设置菜单中的对象,并确保使用的是正确的API 名称。有时自定义对象的标签与其 API 名称不同(即,如果对象标签在创建后已更改(
  • 确认您的简单销售队伍初始化代码 (sf = Salesforce(password=userPassword, username=userName, organizationId=orgId)( 将您带入正确的组织(您的orgId正确(
  • 作为最后的努力,您可以尝试重新安装simple-salesforce。我建议这通常会导致SalesforceMalformedRequest错误而不是Attribution错误,并且您可能使用的是过时版本的Simple-Salesforce

最新更新