2014-11-05 149 views
1

我有一個對象複製剛剛從SQLAlchemy的對象

esc = Escalation.query\ 
    .filter(Escalation.esc_id == esc_id).first() 

而且我想所有列的複製,除了主鍵和外鍵,這樣我可以做的這個新副本中的數據列用新關係在數據庫中對象。

目前,我只是使可以採取升級實例的構造方法,所以我可以說

​​

,但我不知道是否有一個內置的功能爲SQLAlchemy的是解決了這個問題。 我看着session.merge,但我不想採取整個狀態。

+1

查看['make_transient'](http://docs.sqlalchemy.org/en/latest/orm/session.html#sqlalchemy.orm.session.make_transient),並查看類似問題http:///stackoverflow.com/questions/14636192/sqlalchemy-modification-of-detached-object。你仍然可能會處理外鍵。 – van 2014-11-05 06:06:37

回答

1

我認爲make_transient看起來是一個很好的解決方案。這不是內置的,但我已經子類sqlalchemy.ext.declarative.DeclarativeMeta有一個自定義__init__並且給了它一些迭代方法,這樣你就可以解壓實例值到一個新的實例是這樣的:

new_esc = Escalation(**esc) 

這是一種儘管如此,還是很痛苦。元類脆弱,傷害了我的大腦。