SQLAlchemy 0.6 Documentation

Release: 0.6.9 | Release Date: May 5, 2012

Table of Contents

Previous Topic

Ordering List

Next Topic

SqlSoup

Project Versions

    Quick Search

    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 distrbution.

    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)
    __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)
    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.