Start here. This is the direct spoken answer to practice first.
Overview
Connects SQLAlchemy object states to flush, commit, close, serialization, and later attribute access.
A transient object has been constructed but is not in a Session. Adding it makes it pending; after a successful flush it becomes persistent and represents a database row in that Session. Expired means some loaded values have been marked to reload on access. Detached means the object is no longer associated with a Session, so unloaded or expired attributes cannot transparently load through that old Session.