gpt4 book ai didi

python - 如何通过 simple_salesforce 进行 Salesforce 批量 API 调用?

转载 作者:行者123 更新时间:2023-11-28 19:47:28 28 4
gpt4 key购买 nike

我正在使用模块 simple-salesforce,但我在文档中没有看到任何关于进行批量 API 调用的内容。有人知道怎么做吗?

https://github.com/simple-salesforce/simple-salesforce

最佳答案

The code确实有一些意见。还有 this readthedocs page但是,即使这样看起来也需要一些帮助。

好东西在先,下面有解释。

代码示例(假设您一次运行整个代码块):

from simple_salesforce import Salesforce

sf = Salesforce(<credentials>)

# query
accounts = sf.bulk.Account.query('SELECT Id, Name FROM Account LIMIT 5')
# returns a list of dictionaries similar to: [{'Name': 'Something totally new!!!', 'attributes': {'url': '/services/data/v38.0/sobjects/Account/object_id_1', 'type': 'Account'}, 'Id': 'object_id_1'}]

# assuming you've pulled data, modify it to use in the next statement
accounts[0]['Name'] = accounts[0]['Name'] + ' - Edited'
# update
result = sf.bulk.Account.update(accounts)
# result would look like [{'errors': [], 'success': True, 'created': False, 'id': 'object_id_1'}]

# insert
new_accounts = [{'Name': 'New Bulk Account - 1', 'BillingState': 'GA'}]
new_accounts = sf.bulk.Account.insert(new_accounts)
# new_accounts would look like [{'errors': [], 'success': True, 'created': True, 'id': 'object_id_2'}]

# upsert
accounts[0]['Name'] = accounts[0]['Name'].replace(' - Edited')
accounts.append({'Name': 'Bulk Test Account'})
# 'Id' is the column to "join" on. this uses the object's id column
upserted_accounts = sf.bulk.Account.upsert(accounts, 'Id')
# upserted_accounts would look like [{'errors': [], 'success': True, 'created': False, 'id': 'object_id_1'}, {'errors': [], 'success': True, 'created': True, 'id': 'object_id_3'}]

# how i assume hard_delete would work (i never managed to run hard_delete due to insufficient permissions in my org)
# get last element from the response.
# *NOTE* This ASSUMES the last element in the results of the upsert is the new Account.
# This is a naive assumption
new_accounts.append(upserted_accounts[-1])
sf.bulk.Account.hard_delete(new_accounts)

使用 simple_salesforce,您可以通过以下方式访问批量 api

<your Salesforce object>.bulk.<Name of the Object>.<operation to perform>(<appropriate parameter, based on your operation>)
  • <your Salesforce object>是你从构造 simple_salesforce.Salesforce(<credentials>) 得到的对象
    • <credentials>是你的 username , password , security_token , 和 sandbox (bool,如果你连接到沙箱)或 session_id . (这是我所知道的两种方式)
  • <Name of the Object>只是AccountOpportunity或者你试图操纵的任何对象
  • <operation to perform>是以下之一:
    • 查询
    • 插入
    • 更新
    • 更新
    • hard_delete(我的帐户没有适当的权限来测试此操作。任何提及纯属猜测)
  • <appropriate parameter>取决于您希望执行的操作
    • query - 包含 SOQL 的字符串
    • 插入 - 字典列表。记得在创建新记录时为您的组织要求的所有字段准备一个 key
    • 更新 - 字典列表。很明显,每个字典都需要一个有效的对象 ID
    • upsert - 字典列表和表示“外部 ID”列的字符串。 “外部 ID”可以是 Salesforce 对象 'Id'或任何其他栏目;做出明智的选择。如果任何字典没有与“外部 ID”相同的键,则会创建一条新记录。
  • 返回什么:取决于操作。
    • 查询返回包含您的结果的字典列表。除了查询的列之外,每个字典都有一个 'attributes'。 key 。这包含一个 'url' key,看起来它可以用于特定对象、key 和 'type' 的 api 请求key,返回的Object的类型
    • insert/update/upsert 返回字典列表。每本词典都像{'errors': [], 'success': True, 'created': False, 'id': 'id of object would be here'}

感谢@ATMA's question展示如何使用 query .有了这个问题和源代码,就能找出insert , update , 和 upsert .

关于python - 如何通过 simple_salesforce 进行 Salesforce 批量 API 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43286524/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com