Tôi sử dụng SqlAlchemy để kết nối với backend cơ sở dữ liệu của mình và sử dụng nhiều khả năng đa xử lý trong ứng dụng Python của tôi. Tôi đã đến một tình huống mà yêu cầu phải vượt qua một tham chiếu đối tượng, đó là kết quả của một truy vấn cơ sở dữ liệu, từ một tiến trình này sang tiến trình khác. Đây là một vấn đề, bởi vì khi truy cập vào một thuộc tính của đối tượng, SqlAlchemy trys để reattach đối tượng vào phiên hiện tại của quá trình khác, mà không có ngoại lệ, bởi vì đối tượng được đính kèm trong một phiên khác:SqlAlchemy và Multiprocessing
InvalidRequestError: Object '<Field at 0x9af3e4c>' is already attached to session '148848780' (this is '159831148')
Cách xử lý tình huống này là gì? Có thể tách đối tượng khỏi phiên đầu tiên hoặc sao chép đối tượng mà không có các công cụ liên quan đến ORM không?
Chỉ cần một gợi ý: Bạn đã cố gắng kết hợp các đối tượng vào phiên mới? http://www.sqlalchemy.org/docs/orm/session.html#merging –
phiên.expunge (obj) làm cho sqlalchemy quên về obj. Tuy nhiên, nếu bạn thay đổi obj sau đó, các thay đổi không được cam kết với cơ sở dữ liệu nữa. đề nghị của maksymko chắc chắn là tốt hơn. – Simon
Thuộc tính trên đối tượng có phải là một đối tượng lưu trữ cơ sở dữ liệu khác không? Ví dụ như nó là một chìa khóa nước ngoài hay một đốm màu? –