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

时间:2019-07-05 15:03:16

标签: python api salesforce simple-salesforce

我已经设法查询表,提取模式并向(自定义)表中添加行,但是无法弄清楚如何通过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'}]

对此进行了尝试,其结果基本相同。有任何想法如何使其正常工作吗?

1 个答案:

答案 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>];"},
)