Release: 1.1.0b2 | Release Date: July 1, 2016
SQLAlchemy 1.1 Documentation
Horizontal Sharding¶
Horizontal sharding support.
Defines a rudimental ‘horizontal sharding’ system which allows a Session to distribute queries and persistence operations across multiple databases.
For a usage example, see the Horizontal Sharding example included in the source distribution.
API Documentation¶
- class
sqlalchemy.ext.horizontal_shard.
ShardedSession
(shard_chooser, id_chooser, query_chooser, shards=None, query_cls=<class 'sqlalchemy.ext.horizontal_shard.ShardedQuery'>, **kwargs)¶ Bases:
sqlalchemy.orm.session.Session
-
__init__
(shard_chooser, id_chooser, query_chooser, shards=None, query_cls=<class 'sqlalchemy.ext.horizontal_shard.ShardedQuery'>, **kwargs)¶ Construct a ShardedSession.
Parameters: - shard_chooser¶ – A callable which, passed a Mapper, a mapped instance, and possibly a SQL clause, returns a shard ID. This id may be based off of the attributes present within the object, or on some round-robin scheme. If the scheme is based on a selection, it should set whatever state on the instance to mark it in the future as participating in that shard.
- id_chooser¶ – A callable, passed a query and a tuple of identity values, which should return a list of shard ids where the ID might reside. The databases will be queried in the order of this listing.
- query_chooser¶ – For a given Query, returns the list of shard_ids where the query should be issued. Results from all shards returned will be combined together into a single listing.
- shards¶ – A dictionary of string shard names to
Engine
objects.
-
- class
sqlalchemy.ext.horizontal_shard.
ShardedQuery
(*args, **kwargs)¶ Bases:
sqlalchemy.orm.query.Query
-
set_shard
(shard_id)¶ return a new query, limited to a single shard ID.
all subsequent operations with the returned query will be against the single shard regardless of other state.
-
Previous: Ordering List Next: Hybrid Attributes