Chcę odłączyć instancję klasy od mojej sesji, ale powinna ona nadal być dostępna do odczytu (bez wysyłania zapytania). I zostały przez skanowanie dokumentacji dni teraz, ale każde podejście staram prowadzi do wiadomościOdłączanie instancji SQLAlchemy, aby nie było odświeżania.
DetachedInstanceError: Instance <MyModel at 0x36bb190> is not bound to a Session;
attribute refresh operation cannot proceed
pracuję z menedżerem zope.sqlalchemy
transakcji w Pyramid. Chcę, aby mój obiekt był możliwy do użytku po transakcja została zatwierdzona. Potrzebuję go tylko do odczytu wartości "buforowanej", czyli tych, które były w nim przed dokonaniem transakcji.
Jedyny sposób, w jaki mogłem się zorientować, to owinięcie klasy (lub samych atrybutów), a następnie śledzenie zmian ręcznie (mogłem to zrobić, ale jest to naprawdę brzydkie i wcale nie pythonic).
Czy istnieje sposób, aby zapobiec próbom odświeżenia tych wartości przez SQLAlchemy?
jako odwrotu bym nawet być otwarte tylko powrocie None
, o ile powyższy błąd nie zostanie wyrzucony po transakcji, co zostało popełnione
Jakiego rodzaju atrybutem próbujesz przeczytać? – benselme
Jest to 'PickleType', który jest modyfikowany przez moją własną funkcję' MutableDict.as_mutable() '.Ale wygląda na to, że po zatwierdzeniu wszystkie dane zostaną usunięte ze stanów, więc musisz zapytać, jakiekolwiek dane chcesz (może być źle tutaj ...). – javex