diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-02-25 23:20:05 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-02-28 22:28:24 -0500 |
commit | 04861dfd0e75e6fff3aa730bcad27f3172ae2fd8 (patch) | |
tree | 7e4c2b038eb7f665584fdee345c1089079f0d93c /lib/sqlalchemy/orm/unitofwork.py | |
parent | dc615763d39916e9c037c7c376db1817cdf02764 (diff) | |
download | sqlalchemy-04861dfd0e75e6fff3aa730bcad27f3172ae2fd8.tar.gz |
disable all raiseload within the unit of work process.
The unit of work process now turns off all "lazy='raise'" behavior
altogether when a flush is proceeding. While there are areas where the UOW
is sometimes loading things that aren't ultimately needed, the lazy="raise"
strategy is not helpful here as the user often does not have much control
or visibility into the flush process.
Fixes: #5984
Change-Id: I23f2e332a5faa5c7c29823c9be9434d129676a5a
Diffstat (limited to 'lib/sqlalchemy/orm/unitofwork.py')
-rw-r--r-- | lib/sqlalchemy/orm/unitofwork.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/sqlalchemy/orm/unitofwork.py b/lib/sqlalchemy/orm/unitofwork.py index c293d90cb..1fb1c10ac 100644 --- a/lib/sqlalchemy/orm/unitofwork.py +++ b/lib/sqlalchemy/orm/unitofwork.py @@ -254,7 +254,9 @@ class UOWTransaction(object): history = impl.get_history( state, state.dict, - attributes.PASSIVE_OFF | attributes.LOAD_AGAINST_COMMITTED, + attributes.PASSIVE_OFF + | attributes.LOAD_AGAINST_COMMITTED + | attributes.NO_RAISE, ) if history and impl.uses_objects: state_history = history.as_state() @@ -266,7 +268,11 @@ class UOWTransaction(object): # TODO: store the history as (state, object) tuples # so we don't have to keep converting here history = impl.get_history( - state, state.dict, passive | attributes.LOAD_AGAINST_COMMITTED + state, + state.dict, + passive + | attributes.LOAD_AGAINST_COMMITTED + | attributes.NO_RAISE, ) if history and impl.uses_objects: state_history = history.as_state() |