首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Salesforce数据转换为Python (简单-salesforce或salesforce-bulk)

将Salesforce数据转换为Python (简单-salesforce或salesforce-bulk)
EN

Stack Overflow用户
提问于 2017-10-04 02:40:01
回答 2查看 3.1K关注 0票数 3

我正在尝试将Salesforce数据加载到Python dataframe中,这样我们就可以在那里进行所有操作。simple_salesforce的警告是,我们已经达到了2,000个限制:

代码语言:javascript
复制
from simple_salesforce import Salesforce as s
eatpies = sf.query('Select Id from Case')
attrs = ['Id']
records = eatpies['records']

data = {}

for rec in records:
    for k in attrs:
        data.setdefault(k, []).append(rec[k])

dframe = pd.DataFrame(data)

print(dframe)

据推测,salesforce-bulk (https://pypi.python.org/pypi/salesforce-bulk/1.0.7)能够绕过这一限制,但我不能更进一步:

代码语言:javascript
复制
job = bulk.create_query_job("Case", contentType='CSV')
batch = bulk.query('select Id, type from Case')

TypeError                                 Traceback (most recent call last)
<ipython-input-13-076e14bf245d> in <module>()
----> 1 batch = bulk.query('select Id, type from Case')

TypeError: query() missing 1 required positional argument: 'soql'

请帮帮忙,谢谢!如果解决方案可以用simple-Salesforce来克服Salesforce的限制,那就太好了,但我通过Google找不到任何解决方案。

EN

回答 2

Stack Overflow用户

发布于 2017-10-16 22:11:42

更改线路

代码语言:javascript
复制
eatpies = sf.query('Select Id from Case')

设置为以下内容:

代码语言:javascript
复制
eatpies = sf.query_all('Select Id from Case')

该方法对query(...)query_more(...)进行了方便的query_all包装。

从文档中:

如果由于一个特别大的结果,Salesforce向您的查询结果添加了一个URL,如“"/services/data/v26.0/query/01gD0000002HU6KIAW-2000",”:

您可以使用ID或完整的nextRecordsUrl拉取额外的结果(如果使用完整的nextRecordsUrl,您必须将'True‘作为您的第二个参数)

代码语言:javascript
复制
sf.query_more("01gD0000002HU6KIAW-2000")
sf.query_more("/services/data/v26.0/query/01gD0000002HU6KIAW-2000", True)

您还可以通过simple-salesforce访问批量API。例如,替换

代码语言:javascript
复制
eatpies = sf.query('Select Id from Case')
attrs = ['Id']
records = eatpies['records']

具有以下功能:

代码语言:javascript
复制
eatpies = sf.bulk.Case.query('Select Id from Case')
attrs = ['Id']
records = eatpies

有关使用Bulk API的更多信息:https://github.com/simple-salesforce/simple-salesforce#using-bulk

票数 4
EN

Stack Overflow用户

发布于 2019-02-11 02:52:45

代码语言:javascript
复制
sf.query_all("select count(Id) from visitors where CreatedDate >= 2017-12-01T00:00:00.000+0000 and CreatedDate < 2019-01-01T00:00:00.000+0000", True)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46551314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档