如何使用salesforce Bulk API

时间:2016-03-14 19:38:56

标签: python salesforce bulk

我尝试使用python连接到Salesforce Bulk API。但是,我不想在真实的salesforce上测试我的代码。我想用我的沙盒进行测试。但是,我不知道如何仅连接到沙箱...我已尝试添加sandbox = True但它不起作用...

import salesforce_bulk

bulk=salesforce_bulk.SalesforceBulk(username="username",password="password")

3 个答案:

答案 0 :(得分:1)

此处的建议可能已过时。通过结合使用Salesforce和SalesforceBulk库,可以使批量上传工作。请注意我要传递给api的域以及需要附加到用户名后的sand_box名称。

from simple_salesforce import Salesforce
from salesforce_bulk import SalesforceBulk
import json
from salesforce_bulk.util import IteratorBytesIO
from urllib.parse import urlparse

USER = "user@domain.com.<sandbox_name>"
PASS = "pass"
SEC_TOKEN = "token"
DOMAIN = "<domain>--<sandbox_name>.<instance>.my"

sf = Salesforce(username=USER, password=PASS, security_token=SEC_TOKEN, domain=DOMAIN)
bulk = SalesforceBulk(sessionId=sf.session_id, host=sf.sf_instance)
job = bulk.create_query_job("table", contentType='JSON')
batch = bulk.query(job, "select Id,LastName from table limit 5000")
bulk.close_job(job)
while not bulk.is_batch_done(batch):
    sleep(10)

for result in bulk.get_all_results_for_query_batch(batch):
    result = json.load(IteratorBytesIO(result))
    for row in result:
        print(row)

答案 1 :(得分:0)

您是否检查包是否已安装

此库将使用salesforce-oauth-request软件包(您必须安装)来运行Salesforce OAUTH2 Web流并返回访问令牌。

密码是否有令牌?

答案 2 :(得分:0)

老问题,但今天我遇到了同样的问题,所以也许这会对某人有所帮助。

这是一个完整的黑客,但它确实有效 - 可能是一个更好的黑客将使用salesforce-oauth-request(它确实有一个&#34; sandbox = True&#34;选项)这样做,但我正在记录无论如何,在via beatbox中,所以先试试了。

Gist是使用beatbox登录沙箱(允许您指定serverUrl),然后使用该sessionId和instance_url通过salesforce_bulk登录。

import beatbox
from salesforce_bulk import SalesforceBulk

# log in to sandbox using beatbox
service = beatbox.PythonClient()

service.serverUrl = 'https://test.salesforce.com/services/Soap/u/20.0'
user = 'user@user.com'
password = 'secret'
token = '12345'

service.login(user, password+token)

# the _Client_serverUrl has the instance url + some 
# SOAP stuff, so we need to strip that off
groups = service._Client__serverUrl.split('/')
instance_url = '/'.join(groups[:3])

# now we can use the instance_url and sessionId to 
# log into Salesforce through SalesforceBulk
bulk = sfdc_bulk_connect(instance_url, service.sessionId)