Używam SqlAlchemy do łączenia się z moim zapleczem bazy danych i intensywnego korzystania z wieloprocesowości w mojej aplikacji Python. Doszedłem do sytuacji, która wymaga przekazania referencji do obiektu, która jest wynikiem zapytania do bazy danych, z jednego procesu do drugiego.SqlAlchemy and Multiprocessing
Jest to problem, ponieważ podczas uzyskiwania dostępu do atrybutu obiektu, SqlAlchemy próbuje ponownie dołączyć obiekt do bieżącej sesji innego procesu, który kończy się niepowodzeniem z wyjątkiem, ponieważ obiekt jest dołączony do innej sesji:
InvalidRequestError: Object '<Field at 0x9af3e4c>' is already attached to session '148848780' (this is '159831148')
Jaki jest sposób poradzenia sobie z taką sytuacją? Czy możliwe jest odłączenie obiektu od pierwszej sesji lub sklonowanie obiektu bez obiektów związanych z ORM?
tylko sugestia: Czy próbowałeś łączących obiekt w nowa sesja? http://www.sqlalchemy.org/docs/orm/session.html#merging –
session.expunge (obj) powoduje, że sqlalchemy zapomina o obj. Jednakże, jeśli później zmienisz obiekt, zmiany nie będą już wprowadzane do bazy danych. sugestia maksymko jest z pewnością lepsza. – Simon
Czy atrybut na obiekcie inny obiekt zapisany w bazie danych? Na przykład czy jest to klucz obcy czy obiekt typu blob? –