2

使用 python 访问 SF 数据的最简单方法是什么?

我需要它用于只读目的。

我曾尝试使用 BeatBox,但它似乎与 3.3 不兼容。

4

2 回答 2

6

要尝试的两个库:

休息力量

简单的销售人员

于 2013-09-15T03:21:06.623 回答
3

salesforce api 是使用称为SOAP的 W3C 标准构建的,因此您可以尝试将 WSDL 文件通过管道传输到通用 SOAP 库中,而不是专用的 salesforce 库。 SUDS是一个成熟的、积极维护的库,我刚刚用它成功完成了 salesforce 元数据 api 调用,看起来像

from suds.client import Client


_SF_PRODUCT_VERSION = (0, 0, 0)
USER_AGENT_STR = '/'.join(['Salesforce',
                           _SF_PRODUCT_NAME,
                           '.'.join(str(x) for x in _SF_PRODUCT_VERSION)])

def login(username, password, token):
        WSDL_URL = 'file://' + path.abspath(_ENTERPRISE_WSDL_FILE)
    suds_client = Client(WSDL_URL)
    suds_client.set_options(headers = {
            'User-Agent': USER_AGENT_STR,
            })
    login_result = suds_client.service.login(username, password+token)
    return login_result

login_result = login(SF_USERNAME, SF_PASSWORD, SF_TOKEN)
suds_client = Client(url=METADATA_WSDL_URL, location=login_result.metadataServerUrl)
session_header = suds_client.factory.create('SessionHeader')
session_header.sessionId = login_result['sessionId']
suds_client.set_options(
    headers = {
        'User-Agent': USER_AGENT_STR,
        },
    soapheaders = {
        'SessionHeader': session_header,
        })
describe_metadata_result = suds_client.service.describeMetadata(29.0)
print "describe metadata result"
print describe_metadata_result

(为了保护无辜者,一些名称已更改。)

所以它并不像它可能的那么简单,但是在这个非常成熟的 SOAP 库之上构建一些额外的时间,它可能会比一些专用的 salesforce 库更健壮。一方面,添加

logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)

在 api 调用将打印通过网络发送的 xml 请求和响应之前,这非常有用。

有一个基于 SUDS 构建的名为 python-salesforce-toolkit 的专用库,但它和它所构建的 SUDS 版本都不再维护。

于 2014-02-27T17:07:00.943 回答