我已经设法查询表,提取模式并向(自定义)表中添加行,但是无法弄清楚如何通过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'}]
对此进行了尝试,其结果基本相同。有任何想法如何使其正常工作吗?
答案 0 :(得分:1)
要删除simple_salesforce
中的记录,必须在与sObject对应的连接属性上调用一个方法。尽管Anonymous Apex可以,SOQL查询是只读的,并且永远不会更新或删除数据。
simple_salesforce
documentation中有一个示例:
sf.Contact.delete('003e0000003GuNXAA0')
如果要通过Anonymous Apex做到这一点,则可以使用restful()
方法来使用Tooling API,但这不是执行简单删除操作的“正确”方法,并且会更慢。 / p>
sf.restful(
"tooling/executeAnonymous",
{"anonymousBody": "delete [SELECT Id FROM Contact WHERE <condition>];"},
)