Python Popen APIを使用してsqlplus経由でOracleデータベースに接続していますか?Pythonを回避する方法sqlplusとのpopen communications()関数は、同じヘッダを複数回返すことを回避します。
マイコード:結果セットの個々の行のデータが正しいながらprodQueryResultで
prodMirrSession = Popen(['sqlplus','-S',prodMirrConnectString], stdin=PIPE, stdout=PIPE, stderr=PIPE)
prodMirrSession.stdin.write(sqlCommand)
prodQueryResult, prodErrorMsg = prodMirrSession.communicate()
、結果セットヘッダは複数回繰り返されます。 例えば:スタンドアロンbashシェルコマンドとしてやbashスクリプト経由でSQLPLUSを使用している場合
PKD_PKG_DEF_ID||'-'||PKD_NAME||'-'||PKD_JOB_ID||'-'||PKD_OUTPUTDIR||'-'||PKD_FRE
--------------------------------------------------------------------------------
Row 1
Row 2
Row 3
PKD_PKG_DEF_ID||'-'||PKD_NAME||'-'||PKD_JOB_ID||'-'||PKD_OUTPUTDIR||'-'||PKD_FRE
--------------------------------------------------------------------------------
Row 4
......
これはそうではありません。
Popen API自体で回避する方法です。 ResultSetのヘッダが複数回フィルタリングされるように、PythonコードのPopen.communicate()からstdoutdata resultSet全体を繰り返し処理する際に、パフォーマンス上のオーバーヘッドが発生しないようにします。
ありがとうございました。
これはdbに接続する良い方法のようではありません。 Oracleには完全に優れた[Pythonインタフェースライブラリ](https://pypi.python.org/pypi/cx_Oracle)があります。 –
私は@DanielRosemanに同意します(しかし、私は人工的な要件が 'sqlplusをクライアントで使用する必要がある'というような状況にありました)。 – woot