使用Python操作Salesforce执行更新语句时遇TypeError错误求助
解决Salesforce Python脚本更新记录的TypeError问题
嘿,我来帮你搞定这个更新报错的问题!
你遇到的TypeError: update() missing 1 required positional argument: 'data',核心原因是**update()方法的调用逻辑和create()完全不一样**——咱们先理清楚两者的区别:
为什么create()能正常运行?
create()是用来创建新记录的,只需要传入包含字段信息的字典就行,它会自动生成新记录的ID,所以你的代码写法没问题:
fieldInfo = { 'account_id' : 'xyz123', 'Name' : 'Prod-C', 'LastSaleDate' : '2017-12-09'} sf_data_cursor.Account.create(fieldInfo)
为什么update()会报错?
update()是修改已有记录,必须明确告诉系统要修改哪条记录,所以它需要两个必填参数:
- 要更新记录的主键ID(Salesforce里标准对象的主键都是
Id字段,比如你创建返回的0015B00000SBMdXQAX) - 包含要更新字段的字典
你之前把ID和更新字段塞进同一个字典传给update(),这不符合方法的参数要求,所以才会提示缺少data参数。
正确的写法分两种情况:
情况1:用主键ID更新
如果你知道要更新记录的Id,直接这样写:
# 替换成你要更新的Account记录的真实ID target_record_id = '0015B00000SBMdXQAX' # 只放需要更新的字段(不需要传ID) update_fields = { 'Name' : 'Prod A', 'LastSaleDate' : '2018-01-04'} # 调用update:第一个参数是ID,第二个是更新数据 sf_data_cursor.Account.update(target_record_id, update_fields)
情况2:用自定义外部ID更新
如果你的account_id是自定义的外部ID字段(不是Salesforce原生的Id),那需要用update_by_external_id()方法:
# 外部ID字段名、外部ID值、更新数据 sf_data_cursor.Account.update_by_external_id('account_id', '0000123', update_fields)
这样调整后,你的更新操作就能正常执行啦!
内容的提问来源于stack exchange,提问作者dark horse
相关产品推荐
相关产品推荐

