I posted this on StackOverflow a few days ago, but I haven't been able to 
figure this one out yet. The original post can be found here: StackOverflow: 
object "is already present in this session" 
<https://stackoverflow.com/questions/64897088/sqlalchemy-object-is-already-present-in-this-session-when-using-a-new-sessio>
.

I'm seeing the below error:
sqlalchemy.exc.InvalidRequestError: Can't attach instance <ObjectType at 
0x10592fe50>; another instance with key ( <class '__main__.ObjectType'>, 
(1,), None) is already present in this session.

I'm seeing this issue when I try to instantiate a new object that has a 
foreign key relationship with an existing object that was created in 
another session.

This happens in a few different cases in my actual code, but in the 
provided sample it occurs with the following steps:
1. Add a new object into a new session
2. Close session and remove() from scoped_session
3. Reference the object in two newly constructed ones via their relationship
4. Error appears on the second object

    # typeDict just contains a pre-fetched ObjectTypes 
    tokyo = Location(name="tokyo", objectType=typeDict['location'])
    tokyo = write(tokyo)

    # If I clear out the current session here, the error will occur
    scopedSessionFactory().close()
    scopedSessionFactory.remove()

    westGate = Gate(name="westGate", destination=tokyo, 
objectType=typeDict['gate'])
    westGate = write(westGate)

    luggage = LocationInput(name="luggage", 
objectType=typeDict['locationinput'])
    luggage = write(luggage)

    # This is the line where the error occurs
    eastGate = Gate(name="eastGate", origin=tokyo, 
destinationInput=luggage, objectType=typeDict['gate'])
    eastGate = write(eastGate) 

I'm not sure what exactly causes this or way. For this example, I could 
just reuse the same session, but I'd like to be able to take an object from 
one closed session and add as a relationship field to another.

Full code sample available here: 
https://gist.github.com/funseiki/a73424bebfb0d809e6d934f699a725bf

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/4d01df93-16ed-45a4-82f3-de04a8e57bcbn%40googlegroups.com.

Reply via email to