使用 simple-salesforce 从 salesforce table 中删除 table 行

delete a table row from salesforce table with simple-salesforce

我已经设法查询 tables,提取模式并向(自定义)table 添加一行,但无法弄清楚如何通过 api 再次删除该行.以下将列出我要删除的行:

import config
from simple_salesforce import Salesforce

sf = Salesforce(password=config.PASSWORD, 
                username=config.EMAIL_SANDBOX, 
                organizationId='',
                domain='test')

sf.query("SELECT Id FROM MyTable__c where id = 'a0D2R067009YpAeWAK'")

已经在网上尝试了很长时间的各种东西,最有可能的是这样的:

sf.query("delete [SELECT Id FROM MyTable__c where id = 'a0D2R067009YpAeWAK']")

如所述here,但不幸的是它引发了:

SalesforceMalformedRequest: Malformed request https://eu20.salesforce.com/services/data/v38.0/query/?q=delete+%5BSELECT+Id+FROM+MyTable__c+where+id+%3D+%27a0D2R067009YpAeWAK%27%5D. Response content: [{'message': 'unexpected token: delete', 'errorCode': 'MALFORMED_QUERY'}]

已经尝试了这方面的变体,结果基本相同。有什么想法可以让它发挥作用吗?

要删除simple_salesforce中的记录,您必须调用与sObject 对应的连接属性的方法。 SOQL 查询是 read-only 并且永远不能更新或删除数据,尽管 Anonymous Apex 可以。

simple_salesforce documentation中有一个例子:

sf.Contact.delete('003e0000003GuNXAA0')

如果你想通过Anonymous Apex来做,你可以使用restful()方法来打工具API,但这不是"right"方法做一个简单的删除操作会比较慢

sf.restful(
    "tooling/executeAnonymous",
    {"anonymousBody": "delete [SELECT Id FROM Contact WHERE <condition>];"},
)