前提・実現したいこと
pythonでスクリプトを実行する際、スクリプトの一部を変数にして実行して、結果を取得したいです。
salesforceのオブジェクトからデータを取得する必要があり、今までは対象となるオブジェクトが1つだったのでオブジェクト名を固定にしていましたが複数になる可能性がでてきました。
そこでオブジェクト名を変数にして動的にすることにしましたが結果が取得できません。
exec
を使ってみましたがわかりにくく、あまり推奨されないようなので他にもっといい方法があればそちらでもかまいません。
ご教授お願いします。
もともとのソースコード
python
1q = self.cn.sf.bulk.Account.query(sql) 2cnt = len(q)
これを下記のようにexec
を使って書き換えました
python
1#対象オブジェクト 2target = 'Account' 3#データ取得 4q = exec(f'self.cn.sf.bulk.{target}.query("{sql}")') 5#レコード数 6cnt = len(q)
exec
で実行はされるが結果が取得できません
TypeError: object of type 'NoneType' has no len()
試したこと
引数を使うと返り値が取れるらしいので下記に変更しましたがエラーになります
python
1#データ取得 2target = 'Account' 3a = dict() 4exec(f'self.cn.sf.bulk.{target}.query("{sql}")', globals(), a) 5#レコード数 6cnt = len(a)
NameError: name 'self' is not defined
補足情報(FW/ツールのバージョンなど)
python 3.8.1
simple-salesforce 1.10.1
vscode 1.48.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/10 04:21