PythonおよびCX_ORACLE -DYNAMIC CURSOR.SETINPUTSIZES
質問
CX_ORACLEを使用して、1つのデータベースから行を選択し、それらの行を別のデータベースのテーブルに挿入しています。 2番目のテーブルの列は、最初の選択と一致します。だから私は(単純化された):
db1_cursor.execute('select col1, col2 from tab1')
rows = db1_cursor.fetchall()
db2_cursor.bindarraysize = len(rows)
db2_cursor.setinputsizes(cx_Oracle.NUMBER, cx_Oracle.BINARY)
db2_cursor.executemany('insert into tab2 values (:1, :2)', rows)
これは正常に機能しますが、私の質問は、SetInputsizesでのハードコーディングを避ける方法です(さらに多くの列があります)。 db1_cursor.descriptionから列タイプを取得できますが、それらをsetinputsizesにどのように供給するかはわかりません。つまり、引数の代わりにリストを渡すにはどうすればsetinputsizesに渡すことができますか?これが理にかなっていることを願っています - PythonとCX_ORACLEは初めてです
解決
使用するだけです タプルの開梱。例えば。
db_types = (d[1] for d in db1_cursor.description)
db2_cursor.setinputsizes(*db_types)
所属していません StackOverflow