用于通过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)
在上传结果中访问'created'而不是'isCreated'。这解决了http://code.google.com/p/salesforce-beatbox/issues/detail?id=4 [davisagli]
0.10 (2009-05-06)
在创建客户端时添加了可选的serverUrl参数。[davisagli]
0.9.1.1之前
古老的历史
项目详情
beatbox-32.1.zip的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7bb27f4b35561678ee2b6e203f634030401b182de9b0a03f2504f5ce899f3c26 |
|
MD5 | db2cfbd6194b0862d7e63ac8de00c661 |
|
BLAKE2b-256 | 255e80102d878a6bd08711248c376daffec88762f6a674d80e2ce1a16a829b34 |