This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

Python client library for accessing the asynchronous Salesforce.com Bulk API.

Installation

pip install salesforce-bulk-yplan

Authentication

To access the Bulk API you need to authenticate a user into Salesforce. The easiest way to do this is just to supply username and password. This library will use the salesforce-oauth-request package (which you must install) to run the Salesforce OAUTH2 Web flow and return an access token.

from salesforce_bulk import SalesforceBulk
bulk = SalesforceBulk(username=username,password=password)

Alternatively if you run have access to a session ID and instance_url you can use those directly:

from urlparse import urlparse
from salesforce_bulk import SalesforceBulk
bulk = SalesforceBulk(sessionId=sessionId, host=urlparse(instance_url).hostname)

Operations

The basic sequence for driving the Bulk API is:

  1. Create a new job
  2. Add one or more batches to the job
  3. Wait for each batch to finish
  4. Close the job

Bulk Query

SalesforceBulk.create_query_job(object_name, contentType='CSV', concurrency=None)

Example

job = bulk.create_query_job("Contact", contentType='CSV')
batch = bulk.query(job, "select Id,LastName from Contact")
while not bulk.is_batch_done(job, batch):
    sleep(10)
bulk.close_job(job)
>>>
for row in bulk.get_batch_result_iter(job, batch, parse_csv=True):
...    print row   #row is a dict

Bulk Insert, Update, Delete

All Bulk upload operations work the same. You set the operation when you create the job. Then you submit one or more documents that specify records with columns to insert/update/delete. When deleting you should only submit the Id for each record.

For efficiency you should use the post_bulk_batch method to post each batch of data. (Note that a batch can have a maximum 10,000 records and be 1GB in size.) You pass a generator or iterator into this function and it will stream data via POST to Salesforce. For help sending CSV formatted data you can use the salesforce_bulk.CsvDictsAdapter class. It takes an iterator returning dictionaries and returns an iterator which produces CSV data.

Full example:

from salesforce_bulk import CsvDictsAdapter
job = bulk.create_insert_job("Account", contentType='CSV')
accounts = [dict(Name="Account%d" % idx) for idx in xrange(5)]
csv_iter = CsvDictsAdapter(iter(accounts))
batch = bulk.post_bulk_batch(job, csv_iter)
bulk.wait_for_batch(job, batch)
bulk.close_job(job)
print "Done. Accounts uploaded."

Concurrency mode

When creating the job, pass concurrency=Serial or concurrency=Parallel to set the concurrency mode for the job.

History

1.2.1 (2016-07-15)

  • Remove salesforce-oauth-request-yplan as a hard requirement in setup.py (to closer match the original).

1.2.0 (2016-07-14)

  • Brought back HISTORY.rst.
  • Python2 and Python3 compatibility.
  • Forked salesforce-bulk-yplan package.
  • Depends on salesforce-oauth-request-yplan from now on.
Release History

Release History

1.2.1

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.2.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
salesforce-bulk-yplan-1.2.1.tar.gz (14.9 kB) Copy SHA256 Checksum SHA256 Source Jul 15, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting