python simple_salesforce: sf.instance.bulk.query выдает ошибку индекса - PullRequest
0 голосов
/ 25 сентября 2019

Итак, я пытаюсь сделать запрос из отдела продаж с помощью библиотеки python simple_salesforce: запрос представляет собой вариант выбора, как показано ниже:

sf.bulk.instance.query("SELECT  field_1, field_2 from table__c WHERE name IN ('1', '2' ...2000 values)")

Переданный мне кортеж имеет около 2000 значений.Поэтому, когда я пытаюсь использовать sf.query, он возвращает 414, или соединение прерывается (иногда это дает слишком длинный URI).Затем я попытался использовать sf.bulk, где я могу перейти к значениям 1300 , но после этого он выдает ошибка индекса: индекс списка выходит за пределы .Это поднято с _get_batch_results .

На данный момент я разбил кортеж на части и сделал несколько запросов к запросу sf.bulk, что я считаю неэффективным.Кто-нибудь может дать мне решение для этого?

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 25 сентября 2019

Вы получаете эту ошибку, потому что ваш запрос слишком длинный и, конечно, это связано с вашим очень длинным условием WHERE ... IN.

Мое предложение состоит в том, чтобы выбросить значения, которые есть в IN, ввременная таблица a переписать запрос как объединение двух таблиц.

Если вы можете создать вторую таблицу table__d со списком значений, ваш запрос может выглядеть следующим образом:

SELECT field_1, field_2 
  FROM table__c 
 WHERE name IN (SELECT name from table__d)

В качестве альтернативы вы можете разделить запрос на 2 запроса по 1000 значений каждый или даже на более мелкие куски.

...