удалить строку таблицы из таблицы salesforce с помощью simple-salesforce - PullRequest
0 голосов
/ 05 июля 2019

Мне удалось запросить таблицы, вытащить схемы и добавить строку в (пользовательскую) таблицу, но я не могу понять, как снова удалить эту строку через 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']")

как описано здесь , но, к сожалению, оно вызывает:

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 Ответ

1 голос
/ 05 июля 2019

Чтобы удалить запись в simple_salesforce, необходимо вызвать метод для атрибута соединения, соответствующего sObject.SOQL-запросы доступны только для чтения и никогда не могут обновлять или удалять данные, хотя Anonymous Apex может.

В документации simple_salesforce есть пример :

sf.Contact.delete('003e0000003GuNXAA0')

Если вы хотите сделать это через Anonymous Apex, вы можете использовать метод restful(), чтобы поразить Tooling API, но это не «правильный» способ сделать простую операцию удаления и будет медленнее.

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