mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-05-19 07:02:05 -04:00
0a8b11bb65
The :class:`.Session` object no longer initates a :class:`.SessionTransaction` object immediately upon construction or after the previous transaction is closed; instead, "autobegin" logic now initiates the new :class:`.SessionTransaction` on demand when it is next needed. Rationale includes to remove reference cycles from a :class:`.Session` that has been closed out, as well as to remove the overhead incurred by the creation of :class:`.SessionTransaction` objects that are often discarded immediately. This change affects the behavior of the :meth:`.SessionEvents.after_transaction_create` hook in that the event will be emitted when the :class:`.Session` first requires a :class:`.SessionTransaction` be present, rather than whenever the :class:`.Session` were created or the previous :class:`.SessionTransaction` were closed. Interactions with the :class:`.Engine` and the database itself remain unaffected. Fixes: #5074 Change-Id: I00b656eb5ee03d87104257a214214617aacae16c