2012-06-26 10 views
15

Ist es möglich, ein Objekt von einer SQLAlchemy-Sitzung zu lösen?Objekt von Sitzung trennen

Ich verwendete deepcopy es, aber als dies seems not to be possible bei der Verwendung von Association-Proxies suche ich nach einer anderen Lösung, um das Objekt aus einer Sitzung zu entfernen, um es zu einem anderen hinzuzufügen.

Antwort

21

Expunge entfernt ein Objekt aus der Session, persistent-Instanzen an den abgenommenen Zustand Senden und Instanzen zu dem Übergangszustand anhängige:

session.expunge(obj1) 

UPDATE: Ein freistehendes Objekt kann zum selben oder einer anderen Sitzung befestigt werden, indem mit

session2.add(obj1) 

oder fusionierte

session2.merge(obj1) 

W Bei merge() wird die angegebene Instanz nicht in der Sitzung platziert und kann einer anderen Sitzung zugeordnet oder getrennt werden. merge() ist sehr nützlich, um den Zustand jeder Art von Objektstruktur ohne Berücksichtigung ihrer Ursprünge oder aktuellen Sitzungszuordnungen zu übernehmen und diesen Zustand innerhalb einer Sitzung zu platzieren.

+0

Kann das Objekt unmittelbar nach dem Löschen einer anderen Sitzung zugewiesen werden? –

+0

@ManuelFaux Siehe Aktualisierung. –

+0

Danke für 'merge'. Sehr hilfreich! –