python mutiple sql execution by using insert or update

40 Views Asked by At

I got the following error occurs when executing sql in Python.

TypeError: not enough arguments for format string

I used executemany function to execute multiple sql statements at once without running a for statement.
And I want to execute the sql statement by receiving the list in "idx".

fruit_idx_list=['123','456','789']
fruit_list = [('123','apple',70,7),('456','strawberry',60,6),('789','banana',100,10)]
sql = "MERGE INTO fruit_test " \
    + "USING DUAL " \
    + "ON idx = {idx}".format(idx = fruit_idx_list) \ #the suspicious part1
    + "WHEN NOT MATCHED THEN " \
    + "INSERT (idx, name, price, vat) VALUES (%s, %s, %s, %s) " \
    + "WHEN MATCHED THEN " \
    + "UPDATE SET idx = %s name = %s, price = %s vat = %s; " #the suspicious part2

cur.executemany(sql, fruit_list) 
conn.commit()

I think I have 2 suspicious part to occur sql error.
One is the part which pass fruit_idx_list then execute sql and another is the update statement part.
Please help me to figure out. Thank you in advance

0

There are 0 best solutions below