Я использую SqlAlchemy для подключения к моей базе данных базы данных и интенсивно использую многопроцессорность в моем приложении Python. Я пришел к ситуации, которая требует передать ссылку на объект, которая является результатом запроса базы данных, из одного процесса в другой.SqlAlchemy and Multiprocessing
Это проблема, поскольку при доступе к атрибуту объекта SqlAlchemy пытается повторно привязать объект к текущему сеансу другого процесса, который не работает с исключением, поскольку объект привязан в другом сеансе:
InvalidRequestError: Object '<Field at 0x9af3e4c>' is already attached to session '148848780' (this is '159831148')
Как можно справиться с этой ситуацией? Можно ли отделить объект от первого сеанса или клонировать объект без связанных с ORM материалов?
Только предложение: вы пробовали слияния объекта в новой сессии? http://www.sqlalchemy.org/docs/orm/session.html#merging –
session.expunge (obj) заставляет sqlalchemy забыть об объекте. Однако, если вы измените obj впоследствии, изменения больше не будут переданы в базу данных. предложение максимко, безусловно, лучше. – Simon
Является ли атрибутом на объекте другой хранимый объект базы данных? Например, это внешний ключ или blob? –