Python Simple-Salesforceを使用してSOQLを介してデータをクエリしています。SOQL構文では「SELECT *」がサポートされていないことがわかっているので、Python SELECTステートメントに挿入するすべてのフィールドの文字列リストを収集するスクリプト。以下は、アカウントオブジェクトの説明方法です。
from simple_salesforce import Salesforce
from simple_salesforce import SFType
#(credentials hidden)
sf = Salesforce(username=username, password=password,
security_token=security_token, sandbox=True,
client_id='mwheeler App')
desc = sf.Account.describe()
print(desc)
以下に示す順序付き辞書からフィールド名を文字列リストに抽出するにはどうすればよいですか?
desc:
OrderedDict([( 'actionOverrides'、[])、( 'activateable'、False)、( 'childRelationships'、[OrderedDict([( 'cascadeDelete'、False)、( 'childSObject'、 'Account')、( 'deprecatedAndHidden '、False)、(' field '、' ParentId ')、(' junctionIdListNames '、[])、(' junctionReferenceTo '、[])、(' RelationshipName '、' ChildAccounts ')、(' reservedDelete '、False) ])、OrderedDict([( 'cascadeDelete'、True)、( 'childSObject'、 'AccountCleanInfo')、( 'deprecatedAndHidden'、False)、( 'field'、 'AccountId')、..... ..
文字列リストを使用して、すべてのフィールドを選択します。
query = sf.query_all("SELECT string_list FROM Account")
以下に示す順序付き辞書からフィールド名を文字列リストに抽出するにはどうすればよいですか?
ソリューションを含めるようにコードを拡張しました
from simple_salesforce import Salesforce
#(credentials hidden)
sf = Salesforce(username=username, password=password,
security_token=security_token, sandbox=True,
client_id='mwheeler App')
desc = sf.Account.describe()
# Below is what you need
field_names = [field['name'] for field in desc['fields']]
soql = "SELECT {} FROM Account".format(','.join(field_names))
results = sf.query_all(soql)
# Alternative method to retrieve results
# I don't have any recommendation which to use
results = sf.bulk.Account.query(soql)
質問が少し前に投稿されたことに気づきました。完全な解決策が必要なだけです。
このpythonライブラリ記述呼び出しはここで見ることができます:
もし私があなただったら、そもそも彼らがどのようにして注文辞書を入手したかを追跡します。
あなたはこの行から見ることができます:
ここからベースURLを使用すること:
これを使用すると、ワークベンチで同じ呼び出しを行うことができます。
https://workbench.developerforce.com/login.php
簡単なグーグル検索で、辞書をトラバースする方法に関するいくつかの有用な例を見つけることができます。ここにいくつかあります:
任意の深さのネストされたディクショナリ上を歩く/反復する(ディクショナリはディレクトリツリーを表す)
あなたが探しているものを知っている限り、辞書を横断することはかなり簡単なはずです。
警告の言葉、私の経験から、すべてのフィールドをクエリすることは FFLib のようなエンタープライズフレームワークに最適ですが、一部のオブジェクトは1つのSOQLクエリにすべてのフィールドを持つように設計されていません。
SOQLの制限については、次のページを参照してください。
お役に立てれば。