我已经设法查询表、拉模式并向(自定义)表添加行,但无法解决如何通过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'}]我在这上面尝试了一些变体,结果基本上是一样的。有什么办法让它工作吗?
发布于 2019-07-05 23:13:07
要删除simple_salesforce中的记录,必须在与sObject对应的连接属性上调用一个方法。SOQL查询是只读的,永远不能更新或删除数据,尽管匿名Apex可以。
在simple_salesforce documentation中有一个例子
sf.Contact.delete('003e0000003GuNXAA0')如果你想通过匿名Apex来做这件事,你可以使用restful()方法来访问Tooling API,但是这不是做一个简单的删除操作的“正确”方式,而且会更慢。
sf.restful(
"tooling/executeAnonymous",
{"anonymousBody": "delete [SELECT Id FROM Contact WHERE <condition>];"},
)https://stackoverflow.com/questions/56905491
复制相似问题