Skip to content

Commit da10c63

Browse files
committed
connection support in ContextQuery
1 parent a0f86f1 commit da10c63

2 files changed

Lines changed: 7 additions & 3 deletions

File tree

cassandra/cqlengine/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -810,7 +810,7 @@ def _inst_batch(self, batch):
810810

811811
@classmethod
812812
def _class_get_connection(cls):
813-
return cls.__connection__
813+
return cls._connection or cls.__connection__
814814

815815
def _inst_get_connection(self):
816816
return self._connection or self.__connection__

cassandra/cqlengine/query.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ class ContextQuery(object):
287287
288288
"""
289289

290-
def __init__(self, model, keyspace=None):
290+
def __init__(self, model, keyspace=None, connection=None):
291291
"""
292292
:param model: A model. This should be a class type, not an instance.
293293
:param keyspace: (optional) A keyspace name
@@ -304,10 +304,14 @@ def __init__(self, model, keyspace=None):
304304
ks = keyspace
305305
self.model = _copy_model_class(model, {'__keyspace__': ks})
306306

307+
if connection:
308+
self.model._connection = connection
309+
307310
def __enter__(self):
308311
return self.model
309312

310313
def __exit__(self, exc_type, exc_val, exc_tb):
314+
self.model._connection = None
311315
return
312316

313317

@@ -991,7 +995,7 @@ def using(self, keyspace=None, connection=None):
991995
clone = copy.deepcopy(self)
992996
if keyspace:
993997
from cassandra.cqlengine.models import _copy_model_class
994-
clone.model = type(self.model, {'__keyspace__': keyspace})
998+
clone.model = _copy_model_class(self.model, {'__keyspace__': keyspace})
995999

9961000
if connection:
9971001
clone._connection = connection

0 commit comments

Comments
 (0)