2017-10-03 15 views
0

SalesforceのデータをPythonのデータフレームに読み込もうとしています。そこですべての操作を行うことができます。 simple_salesforceは我々が2,000限界に達した警告と協力:SalesforceのデータをPythonに変換する(単純なSalesforceまたはsalesforce-bulk)

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のバルク(https://pypi.python.org/pypi/salesforce-bulk/1.0.7)がこの制限を回避することができますが、私はこれよりもさらに取得することはできません。

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' 

助けてください、ありがとう!シンプルなSalesforceで解決策を実行してSalesforceの制限を超えることができれば、それは素晴らしいことですが、Googleを通じて解決策を見つけることができませんでした。

答えて

0

変更ライン以下に

eatpies = sf.query('Select Id from Case') 

eatpies = sf.query_all('Select Id from Case') 

方法query_all query(...)query_more(...)の簡易ラッパー。ドキュメントから

により特に大きな結果に、Salesforceは、このような "nextRecordsUrl" として、クエリの結果に nextRecordsUrlを追加し、場合: 「/services/data/v26.0/を

sf.query_more("01gD0000002HU6KIAW-2000") 
sf.query_more("/services/data/v26.0/query/01gD0000002HU6KIAW-2000", True) 
クエリ/ 01gD0000002HU6KIAW-2000" は、あなたはIDまたは完全なURLのいずれかで 追加の結果を引くことができます( フルURLを使用している場合、あなたはあなたの2番目の引数として 『TRUE』渡す必要があります)

また、simple-salesforceを通じてBulk APIにアクセスできます。たとえば、次のように

eatpies = sf.query('Select Id from Case') 
attrs = ['Id'] 
records = eatpies['records'] 

を置き換える:バルクAPIを使用する方法について

eatpies = sf.bulk.Case.query('Select Id from Case') 
attrs = ['Id'] 
records = eatpies 

詳細情報:https://github.com/simple-salesforce/simple-salesforce#using-bulk

関連する問題