В Django, когда я передаю запрос для вставки строки, в Oracle Db строка вставляется в таблицу дважды.
@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)
Снимок экрана БД
|ID |Idx|Value_1 |Operator|Value_2 |Boolean |
|---|---|----------|--------|-----------|--------|
|1 |1 |1 |1 |equals |2 |AND |
|1 |2 |2000000 |equals |30000000 |None |
.
|1 |2 |2000000 |equals |30000000 |None |
Я вижу, что в БД вставлено 2 строки. Версия Django - 4.1.1
В чем может быть причина дублирования строк? Благодарю за помощь
Я использовал breakpoint() и убедился, что api вызывается один раз. В бэкенде нет дублирующих записей.
вы дважды вызываете cur.execute(...)
. Не уверен, что вы хотите с этим делать, но я думаю, что дважды вызываемые записи происходят из этих строк, вероятно
Похоже, что вы дважды вызываете функцию execute в своем коде
sql5 = cur.execute(q)
cur.execute(sql5)
удаление второй строки исправит проблему