使用cx_Oracle将完整的python列表推送到oracle db

时间:2018-03-16 07:38:22

标签: python database oracle plsql cx-oracle

我有两个列表,每个列表包含100个元素(例如class_db_colclass_id_col)。我想将class_db_col列表中的所有项目推送到oracle DB中的一列(比如class_result)。

statement = 'update TRANSFERS_TXN_MT set CLASS_RESULT = :1 where id= :2'
for i in range(len(class_db_col)):
     cursor.execute(statement,(class_id_col[i],class_db_col[i]))
conn.commit() 

收到此错误

  

ORA-01484:数组只能绑定到PL / SQL语句

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果你有一个元组数组,你可以使用cursor.executemany()代替。看起来您有两个并行数组,您可以通过此代码创建元组:

data = list(zip(class_id_col,class_db_col))

这应该会产生一个如下所示的数组:

[(1,4),(2,6),...,(8,15)]

然后你可以使用这段代码:

cursor.executemany("更新TRANSFERS_TXN_MT设置CLASS_RESULT =:1,其中id =:2",数据)