Я хочу дублировать экземпляр модели (строку) в SQLAlchemy с помощью orm. Моя первая мысль заключалась в том, чтобы сделать это:
i = session.query(Model)
session.expunge(i)
old_id = i.id
i.id = None
session.add(i)
session.flush()
print i.id #New ID
Однако, по-видимому, отдельный объект все еще "помнит", какой у него был идентификатор, хотя я установил id в None, пока он был отсоединен. Таким образом, session.flush() пытается выполнить UPDATE, изменяя первичный ключ на нуль.
Является ли это ожидаемым поведением? Как я могу удалить "память" этого атрибута и просто рассматривать отдельный объект как новый объект при повторном добавлении его в сеанс? Как, в общем, клонирует экземпляр модели SQLAlchemy?