質問

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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top