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.