Home > Software design >  In Django when i passed a query to insert a row, in Oracle Db the row is being inserted twice in the
In Django when i passed a query to insert a row, in Oracle Db the row is being inserted twice in the

Time:11-08

@api_view(['PUT'])
def updateRule1(request, id):
    nums15 = 'OK'
    json_data = json.loads(request.body)
    # print(json_data)
    con = None
    cur = None

    try:
        con = cx_Oracle.connect('<server connection details>')
        cur = con.cursor()
    except cx_Oracle.DatabaseError as e:
        print("Problem establishing connection with Oracle DB", e)

    q = "INSERT INTO XXMSE.RE_PREDICATE (RULE_ID, PREDICATE_ID, INPUT_VALUE_ID1,  
         MATHEMATICAL_VALUE, INPUT_VALUE_ID2, BOOLEAN_OPERATOR) VALUES 
         ('1','2','2000000','equals','30000000','None')"
    print(q)
    sql5 = cur.execute(q)
    cur.execute(sql5)
    con.commit()

    if cur:
        cur.close()
    if con:
        con.close()    
    
    return Response(nums15)

DB screenshot |ID |Idx|Value_1 |Operator|Value_2 |Boolean | |---|---|----------|--------|-----------|--------| |1 |1 |1 |equals |2 |AND | |1 |2 |2000000 |equals |30000000 |None |
|1 |2 |2000000 |equals |30000000 |None |

I see that there are 2 rows inserted into the DB. Django version is 4.1.1

What would be the reason for duplicate rows? Appreciate your help

I used breakpoint() and made sure that api is called getting once.There is no duplicate entries in the backend.

CodePudding user response:

you call twice cur.execute(...). Not sure what you want to do with that, but I think the twice entries come from this lines probably

CodePudding user response:

It seems that you are calling the execute function twice in your code

sql5 = cur.execute(q)
cur.execute(sql5)

remove the second line will fix the issue

  • Related