跳转到主要内容

用于通过SOAP API查询/更新Salesforce.com数据的Python库

项目描述

简介

这是Simon Fell编写的beatbox模块的distutils包装和更新版本,它是一个Salesforce.com合作伙伴Web服务API的Python客户端实现。

此模块包含Salesforce.com客户端的2个版本

XMLClient

原始beatbox版本的客户端,返回xmltramp对象。

PythonClient

将返回的对象映射到正确的Python数据类型。例如,整数字段返回整数。

兼容性

Beatbox支持Salesforce合作伙伴Web服务API的16.0至32.0版本。然而,以下API调用尚未实现

  • emptyRecycleBin

  • executeListView

  • invalidateSessions

  • logout

  • merge

  • performQuickActions

  • process

  • queryAll

  • undelete

  • describeSObject

  • sendEmail

  • 所有除describeGlobal、describeSObjects和describeTabs之外的所有describe*调用

Beatbox已在Python 2.7上进行测试。

基本使用示例

实例化Python Salesforce.com客户端
>>> svc = beatbox.PythonClient()
>>> svc.login('username', 'passwordTOKEN')

(请注意,通过API与Salesforce.com交互需要使用“安全令牌”,该令牌必须附加到密码。)

查询姓为'Doe'的联系人
>>> res = svc.query("SELECT Id, FirstName, LastName FROM Contact WHERE LastName='Doe'")
>>> res[0]
{'LastName': 'Doe', 'type': 'Contact', 'Id': '0037000000eRf6vAAC', 'FirstName': 'John'}
>>> res[0].Id
'0037000000eRf6vAAC'
添加新的潜在客户
>>> contact = {'type': 'Lead', 'LastName': 'Glick', 'FirstName': 'David', 'Company': 'Individual'}
>>> res = svc.create(contact)
获取新创建的潜在客户的ID
>>> res[0]['id']
'00Q7000000RVyiHEAT'
转换潜在客户
>>> res = svc.convertLead({
...     'leadId': '00Q7000000RVyiHEAT',
...     'convertedStatus': 'Closed - Converted',
... })
获取新联系人的ID
>>> str(res[0]['contactId'])
'0037000000TEGrsAAH'

更多示例

示例文件夹包含原始beatbox的示例。有关如何使用PythonClient的示例,请参阅src/beatbox/tests/test_pythonClient.py。

一些在beatbox之上构建的其他产品也可以提供使用示例

替代方案

simple-salesforce被推荐作为Salesforce.com REST API的客户端。

David Lanstein创建了一个基于suds SOAP库的Python Salesforce Toolkit。根据有限的测试,它似乎在返回大量数据的操作中比beatbox慢;然而,如果您想自动生成新WSDL(例如企业Web服务API)的服务代理,它可能是一个更好的选择。

Salesforce.com的Ron Hess已将beatbox修改为与Google App Engine一起使用。请参阅http://code.google.com/p/force-app-engine/

运行测试

首先,我们需要在您的Salesforce实例中的联系人对象中添加一些自定义字段

  • 登录到您的Salesforce.com实例

  • 浏览到设置 –> 定制 –> 联系人 –> 字段 –> “新建”按钮

  • 添加一个标记为“最喜欢的水果”的多选下拉列表,然后添加
    • 苹果

    • 橙子

  • 保留默认的3行,字段名应默认为“Favorite_Fruit”

  • 添加一个标记为“最喜欢的整数”的数字,18位,0位小数

  • 添加一个标记为“最喜欢的浮点数”的数字,13位,5位小数

在您的python路径中创建一个sfconfig文件,格式如下

USERNAME='your salesforce username'
PASSWORD='your salesforce passwordTOKEN'

其中TOKEN是您的Salesforce API登录令牌。

将‘./src’添加到您的PYTHONPATH

运行测试

python src/beatbox/tests/test_beatbox.py
python src/beatbox/tests/test_pythonClient.py

变更日志

32.1 (2014-12-04)

  • 修复在将单个对象而不是列表传递给convertLead时的bug。[davisagli]

32.0 (2014-12-01)

  • 添加对convertLead调用的支持。[davisagli]

  • 默认使用Salesforce.com合作伙伴WSDL的32.0版本。[davisagli]

  • 不要使用XMLGenerator的_out内部方法。[smcmahon]

20.0 (2010-11-30)

  • 将‘encryptedstring’添加到作为字符串序列化的类型列表中。感谢sobyone。[davisagli]

  • 默认使用Salesforce.com合作伙伴WSDL的20.0版本。[davisagli]

19.0 (2010-08-23)

  • 更新对describeGlobal和describeSObjects响应的序列化,以包括API现在返回的新属性。为了向后兼容,我们将describeGlobal响应的类型属性设置为所有类型的名称列表(Salesforce现在在单独的DescribeGlobalSObjectResult对象中返回这些名称)。[davisagli]

  • 默认更新为使用Salesforce.com合作伙伴WSDL的19.0版本。同时,默认使用新的login.salesforce.com登录端点。[davisagli]

16.1 (2010-03-11)

  • 除了从httplib捕获异常外,还从套接字库捕获异常,这修复了在版本16.0中引入的回归。[davisagli]

16.0 (2009-11-12)

  • 在序列化textarea字段的值时,不要删除换行符。[davisagli]

  • 确保在Python值为None时,向fieldsToNull添加一个字段。[rhettg, davisagli]

  • 修复了类型为long的数字未转换为字符串的问题。[spleeman, davisagli]

  • 仅在重试连接时捕获HTTP异常。[spleeman, davisagli]

16.0b1 (2009-09-08)

  • 在调试级别记录beatbox调用。[davisagli]

  • 修复了与Python 2.6兼容的字符串异常。[davisagli]

  • 添加了对通过search方法进行的SOSL搜索的支持。感谢Web Collective的Alex Tokar。[davisagli]

  • 添加了一个可选的缓存,用于缓存在将查询结果序列化到Python对象时所需的sObject类型描述。这可以避免每个查询额外的describeSObjects API调用,但如果Salesforce.com中的类型元数据被修改,则信息可能会过时。默认情况下,缓存是关闭的。通过在实例化Python客户端时传递cacheTypeDescriptions=True来打开它。可以通过调用Python客户端的flushTypeDescriptionsCache方法来重置缓存。[davisagli]

  • 支持将完整的SOQL语句作为Python客户端查询方法的参数。旧的3部分方法签名(fields,sObjectType,conditionalExpression)应该继续工作。[davisagli]

  • 在Python客户端中,支持返回多种类型对象的关联查询和其他查询。对象类型描述(用于将字段值序列化为正确的Python类型)在第一次使用后缓存到查询的持续时间。[davisagli]

  • 在Python客户端中,查询现在返回一个类似于列表的QueryRecordSet,它包含一系列类似于字典的QueryRecord对象,而不是包含字典列表的字典。这允许更Pythonic的访问,例如results[0].Id而不是results[‘results’][0][‘Id’]。旧的语法应该仍然有效。感谢Quintagroup的Melnychuk Taras。[davisagli]

  • 更新为使用Salesforce.com合作伙伴WSDL的16.0版本。[davisagli]

0.12 (2009-05-13)

  • 如果传入的值评估为布尔值False,则使用默认的serverUrl值。[davisagli]

0.11 (2009-05-13)

0.10 (2009-05-06)

  • 在创建客户端时添加了可选的serverUrl参数。[davisagli]

0.9.1.1之前

  • 古老的历史

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源分布

beatbox-32.1.zip (46.7 kB 查看哈希)

上传

由以下支持