Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQLAlchemy: Modification of detached object

Tags:

I want to duplicate a model instance (row) in SQLAlchemy using the orm. My first thought was to do this:

i = session.query(Model) session.expunge(i)  old_id = i.id i.id = None session.add(i) session.flush() print i.id #New ID 

However, apparently the detached object still "remembers" what id it had, even though I set the id to None while it was detached. Thus, session.flush() tries to execute an UPDATE changing the primary key to null.

Is this expected behavior? How can I remove the 'memory' of this attribute, and just treat the detached object as a new object upon re-adding it to the session? How, in general, does one clone an SQLAlchemy model instance?