使用 cx_Oracle 将完整的 python 列表推送到 oracle 数据库

pushing complete python list to oracle db using 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: arrays can only be bound to PL/SQL statement

谁能帮我解决这个问题?

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

数据=列表(zip(class_id_col,class_db_col))

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

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

那么你可以使用这个代码:

cursor.executemany("update TRANSFERS_TXN_MT set CLASS_RESULT = :1 where id = :2", 数据)