одной транзакции я сначала удаляю сущность
session.delete(obj)
А после создаю с таким же уникальным параметром
session.add(obj)
И когда делаю
session.commit()
То падает ошибка с тем, что такие данные уже есть. Если между удалением и созданием сделать
session.flush() то все ок
Есть другие решения кроме flush?
Можешь попробовать session.execute(delete(obj).where(obj.id == id))
Но хотелось бы решение с session.delete
session.delete удаляет из сессии, не из бд
тебе в базу нужно отправить данные и обновить стейт в сессии. других решений нет, т.к. сессия хранить в себе записи по pk
Логично, и это я понимаю. Но и падает в момент комита. И наверное тут логичнее было бы если бы в комите были бы действия в таком же порядке как и работа с сессией
тогда хз, надо код смотреть детальней
Обсуждают сегодня