diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-08-07 12:32:50 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-08-07 12:32:50 -0400 |
commit | 7f52c10357cbc98e467f317128b3fea2018eaf7c (patch) | |
tree | 1da41dee1fac72034fd6e47a407de4850c225d5f | |
parent | 9a3fee2cb6b608eb5c0263cf5a7e9085f74f2e73 (diff) | |
download | sqlalchemy-7f52c10357cbc98e467f317128b3fea2018eaf7c.tar.gz |
Include bulk update/delete in RoutingSession example
Fixes: #5407
Change-Id: Ia0965dbc88d744cded5c23021898388f2cf95f8d
-rw-r--r-- | doc/build/orm/persistence_techniques.rst | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/doc/build/orm/persistence_techniques.rst b/doc/build/orm/persistence_techniques.rst index 226b31837..ffafe9295 100644 --- a/doc/build/orm/persistence_techniques.rst +++ b/doc/build/orm/persistence_techniques.rst @@ -706,7 +706,8 @@ More comprehensive rule-based class-level partitioning can be built by overriding the :meth:`.Session.get_bind` method. Below we illustrate a custom :class:`.Session` which delivers the following rules: -1. Flush operations are delivered to the engine named ``leader``. +1. Flush operations, as well as bulk "update" and "delete" operations, + are delivered to the engine named ``leader``. 2. Operations on objects that subclass ``MyOtherClass`` all occur on the ``other`` engine. @@ -723,6 +724,7 @@ a custom :class:`.Session` which delivers the following rules: 'follower2':create_engine("sqlite:///follower2.db"), } + from sqlalchemy.sql import Update, Delete from sqlalchemy.orm import Session, sessionmaker import random @@ -730,7 +732,7 @@ a custom :class:`.Session` which delivers the following rules: def get_bind(self, mapper=None, clause=None): if mapper and issubclass(mapper.class_, MyOtherClass): return engines['other'] - elif self._flushing: + elif self._flushing or isinstance(clause, (Update, Delete)): return engines['leader'] else: return engines[ |