summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/unitofwork.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2021-02-25 23:20:05 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2021-02-28 22:28:24 -0500
commit04861dfd0e75e6fff3aa730bcad27f3172ae2fd8 (patch)
tree7e4c2b038eb7f665584fdee345c1089079f0d93c /lib/sqlalchemy/orm/unitofwork.py
parentdc615763d39916e9c037c7c376db1817cdf02764 (diff)
downloadsqlalchemy-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.py10
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()