【问题标题】:simple_salesforce python : sf.instance.bulk.query gives index errorsimple_salesforce python:sf.instance.bulk.query 给出索引错误
【发布时间】:2019-09-25 07:14:06
【问题描述】:

所以我尝试使用 python simple_salesforce 库从 salesforce 查询: 查询是如下所示的 Select:

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 值,但之后它给出了 index error: list index out of range。这是从 _get_batch_results 提出的。

现在我已经将元组 split 分成多个部分,并对 sf.bulk 查询进行了多个查询,我认为这效率不高。任何人都可以为我提供解决方案吗?

感谢任何帮助!

【问题讨论】:

    标签: python soql simple-salesforce


    【解决方案1】:

    您收到此错误是因为您的查询太长,当然这是由于您的WHERE ... IN 条件太长。

    我的建议是将IN 中的值放入临时表中,并将查询重写为两个表之间的连接。

    如果您可以使用值列表创建第二个表 table__d,那么您的查询可能如下所示:

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

    或者,您可以将查询拆分为 2 个查询,每个查询有 1000 个值,甚至可以分成更小的块。

    【讨论】:

    • 感谢您的回答。我不明白有关加入的部分,因为这仅与一个表有关。您能对此有所了解吗?对于您的信息,这适用于 1300 值的情况。以上任何内容都会让我返回错误
    • 我已经添加了查询,还有一个额外的建议。 414错误是查询太长导致的,把它弄短一点就好:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多