During the execution of method executemany() the error "ORA-01036: illegal variable name/number arises". Execution of a similar method execute() with the same data is successful. Сode that ends with an error: update_data_df = read_docs_df[['CONTRACT_NUM', 'DOCID']].copy() cur_upd = conn_dwh.cursor() dataUpdate = [tuple(i) for i in update_data_df.values] print(dataUpdate) sqlTxt = "UPDATE USERBOX_MIDDLE_OFFICE.rvp_doc_partner_to_archive SET DOCID = :2 WHERE CONTRACT_NUM = ':1'" cur_upd.executemany(sqlTxt, dataUpdate) updated_docs = cur_upd.rowcount conn_dwh.commit() cur_upd.close() DatabaseError: ORA-01036: illegal variable name/number print(dataUpdate) output: [('П/0097232-Д8', 7481640), ('П/0117840-Д2', 7131468), ('1/А-БПИ/Нск-Д1', 6819213), ('П/0082021-Д5', 7425529)] Code worked successfully: update_data_df = read_docs_df[['CONTRACT_NUM', 'DOCID']].copy() cur_upd = conn_dwh.cursor() updated_docs = 0 for row in update_data_df.itertuples(): sqlTxt = f"UPDATE USERBOX_MIDDLE_OFFICE.rvp_doc_partner_to_archive SET DOCID = {row.DOCID} WHERE CONTRACT_NUM = '{row.CONTRACT_NUM}'" print(sqlTxt) cur_upd.execute(sqlTxt) updated_docs += cur_upd.rowcount conn_dwh.commit() cur_upd.close() Python 3.9 oracledb 1.4.1 Continue reading...