Uso SqlAlchemy para conectarme a mi base de datos backend y hacer uso intensivo del multiproceso en mi aplicación Python. Llegué a una situación que requiere pasar una referencia de objeto, que es el resultado de una consulta de base de datos, de un proceso a otro.SqlAlchemy y multiprocesamiento
Esto es un problema, porque al acceder a un atributo del objeto, SqlAlchemy intenta volver a conectar el objeto en la sesión actual del otro proceso, que falla con una excepción, porque el objeto se adjunta en otra sesión:
InvalidRequestError: Object '<Field at 0x9af3e4c>' is already attached to session '148848780' (this is '159831148')
¿Cuál es la manera de manejar esta situación? ¿Es posible separar el objeto de la primera sesión o clonar el objeto sin las cosas relacionadas con ORM?
Sólo una sugerencia: ¿Ha intentado fusionar el objeto en la nueva sesión? http://www.sqlalchemy.org/docs/orm/session.html#merging –
session.expunge (obj) hace que sqlalchemy se olvide de obj. Sin embargo, si cambia obj después, los cambios ya no están comprometidos con la base de datos. La sugerencia de maksymko es ciertamente mejor. – Simon
¿El atributo en el objeto es otro objeto almacenado de la base de datos? Por ejemplo, ¿es una clave foránea o un blob? –