From 247f703c7b3f11c6a14036b864a417994e2b28d7 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 25 Oct 2019 10:08:18 -0400 Subject: [PATCH] Warn that before_compile for lazyload needs bake_queries=False The longer term future plan for ORM queries is that there will be a new hook that receives queries before invocation rather than "compilation", which will make use of a new caching system. Fixes: #4947 Change-Id: I256c16155a0cc9b7133e86e22d27040cb64eb1a9 (cherry picked from commit 172d99a8a1282b534aeadafebdd2af0162758931) --- lib/sqlalchemy/orm/events.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/sqlalchemy/orm/events.py b/lib/sqlalchemy/orm/events.py index b243e783b3..8b560804f9 100644 --- a/lib/sqlalchemy/orm/events.py +++ b/lib/sqlalchemy/orm/events.py @@ -2391,6 +2391,13 @@ class QueryEvents(event.Events): The event should normally be listened with the ``retval=True`` parameter set, so that the modified query may be returned. + .. warning:: If the :meth:`.QueryEvents.before_compile` event is to + be applied to :class:`.Query` objects that are used for lazy loading + of :func:`.relationships` (as described at :ref:`lazy_loading`), + it may be necessary to set :paramref:`.relationship.bake_queries` + to ``False``, else the :meth:`.QueryEvents.before_compile` event + will not be invoked for each lazy load operation. + .. seealso:: :meth:`.QueryEvents.before_compile_update` -- 2.47.2