J'utilise SqlAlchemy pour me connecter au backend de ma base de données et faire un usage intensif du multitraitement dans mon application Python. Je suis arrivé à une situation qui nécessite de passer une référence d'objet, qui est le résultat d'une requête de base de données, d'un processus à un autre. C'est un problème, car lors de l'accès à un attribut de l'objet, SqlAlchemy tente de rattacher l'objet dans la session en cours de l'autre processus, qui échoue avec une exception, car l'objet est attaché dans une autre session:SqlAlchemy et Multiprocessing
InvalidRequestError: Object '<Field at 0x9af3e4c>' is already attached to session '148848780' (this is '159831148')
Quelle est la façon de gérer cette situation? Est-il possible de détacher l'objet de la première session ou de cloner l'objet sans les éléments liés à ORM?
Juste une suggestion: avez-vous essayé de fusionner l'objet en la nouvelle session? http://www.sqlalchemy.org/docs/orm/session.html#merging –
session.expunge (obj) fait que sqlalchemy oublie obj. Cependant, si vous modifiez obj par la suite, les modifications ne sont plus validées dans la base de données. La suggestion de maksymko est certainement meilleure. – Simon
L'attribut sur l'objet est-il une autre base de données stockée objet? Par exemple est-ce une clé étrangère ou un blob? –