diff options
Diffstat (limited to 'lib/sqlalchemy/orm/query.py')
| -rw-r--r-- | lib/sqlalchemy/orm/query.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index cdad55320..458217e22 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -1637,8 +1637,7 @@ class Query( "params() takes zero or one positional argument, " "which is a dictionary." ) - params = dict(self.load_options._params) - params.update(kwargs) + params = self.load_options._params.union(kwargs) self.load_options += {"_params": params} @_generative @@ -1965,6 +1964,19 @@ class Query( join(Order.items).\ join(Item.keywords) + .. note:: as seen in the above example, **the order in which each + call to the join() method occurs is important**. Query would not, + for example, know how to join correctly if we were to specify + ``User``, then ``Item``, then ``Order``, in our chain of joins; in + such a case, depending on the arguments passed, it may raise an + error that it doesn't know how to join, or it may produce invalid + SQL in which case the database will raise an error. In correct + practice, the + :meth:`_query.Query.join` method is invoked in such a way that lines + up with how we would want the JOIN clauses in SQL to be + rendered, and each call should represent a clear link from what + precedes it. + **Joins to a Target Entity or Selectable** A second form of :meth:`_query.Query.join` allows any mapped entity or |
