diff options
-rw-r--r-- | examples/query_caching/query_caching.py | 7 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/query.py | 3 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/shard.py | 5 |
3 files changed, 2 insertions, 13 deletions
diff --git a/examples/query_caching/query_caching.py b/examples/query_caching/query_caching.py index 1ac8230b6..fb250acca 100644 --- a/examples/query_caching/query_caching.py +++ b/examples/query_caching/query_caching.py @@ -13,13 +13,6 @@ class CachingQuery(Query): def with_cache_key(self, cachekey): self.cachekey = cachekey - # override the _clone() method. a future release - # will just fix _clone() in Query to not hardcode the class so this won't be needed. - def _clone(self): - q = CachingQuery.__new__(CachingQuery) - q.__dict__ = self.__dict__.copy() - return q - # single point of object loading is __iter__(). objects in the cache are not associated # with a session and are never returned directly; only merged copies. def __iter__(self): diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 43f206f38..700d24d33 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -305,7 +305,8 @@ class Query(object): return self def _clone(self): - q = Query.__new__(Query) + cls = self.__class__ + q = cls.__new__(cls) q.__dict__ = self.__dict__.copy() return q diff --git a/lib/sqlalchemy/orm/shard.py b/lib/sqlalchemy/orm/shard.py index 6850a0bb0..b4525d8fb 100644 --- a/lib/sqlalchemy/orm/shard.py +++ b/lib/sqlalchemy/orm/shard.py @@ -80,11 +80,6 @@ class ShardedQuery(Query): self.query_chooser = self.session.query_chooser self._shard_id = None - def _clone(self): - q = ShardedQuery.__new__(ShardedQuery) - q.__dict__ = self.__dict__.copy() - return q - def set_shard(self, shard_id): """return a new query, limited to a single shard ID. |