Hi there,

I'm looking to insert values into an oracle table (my_table) using the query 
below. The insert query works when the PROJECT is not NULL/empty (""). However 
when PROJECT is an empty string(''), the query creates a new duplicate row 
every time the code is executed (with project value populating as null). I 
would like to modify my query so a new row is not inserted when all column 
values are matched (including when project code is null). 
I'm guessing I would need to include a "when matched" statement, but not too 
sure on how to get this going. Would appreciate help with this, thanks.

```
con = cx_Oracle.connect(connstr)
cur = con.cursor()
rows = [tuple(x) for x in df.values]
cur3.executemany('''merge into my_table
using dual
on (YEAR = :1 and QUARTER = :2 and CODE = :3 and AMOUNT = :4 and DATE = :5 and 
COMMENTS = :6 and PROJECT = :7)
when not matched then insert values (:1, :2, :3, :4, :5, :6, :7)
''',rows)
con.commit()
cur.close()
con.close()
```
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to