Вы можете использовать оператор Merge
вместе с вашим Dataframe
import cx_Oracle
import pandas as pd
from pandas import DataFrame
dataset = pd.DataFrame({'GRP_ID': ['0024','0027','0029'],
'GRP_NM': ['Abac Sol','Wlsy Inc','Xyz Corp'],
'MRG_ID': [17,8404,1986]})
con = cx_Oracle.connect('uname/pwd@host:port/service_name')
cursor = con.cursor()
sql ='merge into test ';
sql+=' using dual';
sql+=' on ( grp_id = :1 )';
sql+=' when matched then update set grp_nm = :2, mrg_id = :3';
sql+=' when not matched then insert( grp_id, grp_nm, mrg_id )';
sql+=' values( :1, :2, :3 )';
df_list = dataset.values.tolist()
for i in range(len(df_list)):
cursor.execute(sql,df_list[i])
con.commit()
, где столбцы GRP_NM
и MRG_ID
обновляются для уже существующих значений для столбца GRP_ID
в таблице и добавляются новые записи для несуществующих значений для столбца GRP_ID
.