You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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()是修改已有记录,必须明确告诉系统要修改哪条记录,所以它需要两个必填参数:

  1. 要更新记录的主键ID(Salesforce里标准对象的主键都是Id字段,比如你创建返回的0015B00000SBMdXQAX)
  2. 包含要更新字段的字典

你之前把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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:39:04