【问题标题】:Missing Data while Reading from Salesforce using Python使用 Python 从 Salesforce 读取数据时丢失数据
【发布时间】:2021-10-19 22:19:56
【问题描述】:

我正在尝试使用 Python 从 Salesforce 批量读取数据。这是创建一个输出 JSON 文件。但是,该文件似乎并未包含所有数据。它有一些但不是全部。

我确认记录 ID 存在于 Salesforce 中,但不存在于 JSON 文件中。如果我将 WHERE 条件更改为在缺少的 id 的修改日期附近关闭,它会显示在 JSON 文件中。我认为这里的响应存在某种大小限制,但找不到任何东西。

有人遇到过这样的问题吗? TIA。

MissingSFData.py

...
sf_object = 'Account'
sf_conn = SalesforceOauthHook(self.sf_conn_id_client, self.sf_conn_id_user).sign_in()

bulk_query = 'select Id,IsDeleted from Account WHERE ModifiedDate >= 2021-06-17T23:10:00+00:00 AND ModifiedDate < 2021-06-21T23:15:00+00:00'
query_results = sf_conn.bulk.__getattr__(sf_object).query(bulk_query) /*bulk.py slightly different from default*/
...

SalesforceOauthHook.py

from simple_salesforce.api import Salesforce /**api.py slightly different from default**/
from airflow.hooks.base_hook import BaseHook

class SalesforceOauthHook(BaseHook):
...
def sign_in(self):
...
    url = "https://{}.my.salesforce.com/services/oauth2/token".format(instance)
    payload = "&".join([
        "client_id={}".format(client_id),
        "client_secret={}".format(client_secret),
        "grant_type=password&",
        "username={}".format(username),
        "password={}".format(password)
      ])
    headers = {
        'content-type': "application/x-www-form-urlencoded"
       }
    response = requests.request("POST", url, data=payload, headers=headers)
    credentials = response.json()

    sf = Salesforce(instance_url=credentials["instance_url"],
                    session_id=credentials["access_token"],
                    version="47.0")

【问题讨论】:

    标签: python salesforce


    【解决方案1】:

    我发现我的问题在于 simple_salesforce 中的 bulk.py。它只读取第一批。这是读取多个批次的解决方案。 https://github.com/simple-salesforce/simple-salesforce/issues/280

    【讨论】:

      猜你喜欢
      • 2018-02-10
      • 2018-09-16
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多