Add default consistency level per-Session
Fixes PYTHON-14
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
1.1.3
|
||||
1.2.0
|
||||
=====
|
||||
In Progress
|
||||
|
||||
Features
|
||||
--------
|
||||
* Add Session.default_consistency_level (PYTHON-14)
|
||||
|
||||
Bug Fixes
|
||||
---------
|
||||
* Don't strip trailing underscores from column names when using the
|
||||
|
||||
@@ -951,6 +951,15 @@ class Session(object):
|
||||
timeout, neither the registered callback or errback will be called.
|
||||
"""
|
||||
|
||||
default_consistency_level = ConsistencyLevel.ONE
|
||||
"""
|
||||
The default :class:`~ConsistencyLevel` for operations executed through
|
||||
this session. This default may be overridden by setting the
|
||||
:attr:`~.Statement.consistency_level` on individual statements.
|
||||
|
||||
.. versionadded:: 1.2.0
|
||||
"""
|
||||
|
||||
max_trace_wait = 2.0
|
||||
"""
|
||||
The maximum amount of time (in seconds) the driver will wait for trace
|
||||
@@ -1082,17 +1091,18 @@ class Session(object):
|
||||
elif isinstance(query, PreparedStatement):
|
||||
query = query.bind(parameters)
|
||||
|
||||
cl = query.consistency_level if query.consistency_level is not None else self.default_consistency_level
|
||||
if isinstance(query, BoundStatement):
|
||||
message = ExecuteMessage(
|
||||
query_id=query.prepared_statement.query_id,
|
||||
query_params=query.values,
|
||||
consistency_level=query.consistency_level)
|
||||
consistency_level=cl)
|
||||
prepared_statement = query.prepared_statement
|
||||
else:
|
||||
query_string = query.query_string
|
||||
if parameters:
|
||||
query_string = bind_params(query.query_string, parameters)
|
||||
message = QueryMessage(query=query_string, consistency_level=query.consistency_level)
|
||||
message = QueryMessage(query=query_string, consistency_level=cl)
|
||||
|
||||
if trace:
|
||||
message.tracing = True
|
||||
|
||||
@@ -51,10 +51,11 @@ class Statement(object):
|
||||
this will be set to a :class:`.QueryTrace` instance.
|
||||
"""
|
||||
|
||||
consistency_level = ConsistencyLevel.ONE
|
||||
consistency_level = None
|
||||
"""
|
||||
The :class:`.ConsistencyLevel` to be used for this operation. Defaults
|
||||
to :attr:`.ConsistencyLevel.ONE`.
|
||||
to :const:`None`, which means that the default consistency level for
|
||||
the Session this is executed in will be used.
|
||||
"""
|
||||
|
||||
_routing_key = None
|
||||
@@ -119,7 +120,7 @@ class SimpleStatement(Statement):
|
||||
return self._query_string
|
||||
|
||||
def __str__(self):
|
||||
consistency = ConsistencyLevel.value_to_name[self.consistency_level]
|
||||
consistency = ConsistencyLevel.value_to_name.get(self.consistency_level, 'Not Set')
|
||||
return (u'<SimpleStatement query="%s", consistency=%s>' %
|
||||
(self.query_string, consistency))
|
||||
__repr__ = __str__
|
||||
@@ -142,10 +143,10 @@ class PreparedStatement(object):
|
||||
|
||||
routing_key_indexes = None
|
||||
|
||||
consistency_level = ConsistencyLevel.ONE
|
||||
consistency_level = None
|
||||
|
||||
def __init__(self, column_metadata, query_id, routing_key_indexes, query, keyspace,
|
||||
consistency_level=ConsistencyLevel.ONE):
|
||||
consistency_level=None):
|
||||
self.column_metadata = column_metadata
|
||||
self.query_id = query_id
|
||||
self.routing_key_indexes = routing_key_indexes
|
||||
|
||||
@@ -17,6 +17,7 @@ try:
|
||||
except ImportError:
|
||||
import unittest # noqa
|
||||
|
||||
from cassandra import ConsistencyLevel
|
||||
from cassandra.query import PreparedStatement, BoundStatement, ValueSequence, SimpleStatement
|
||||
from cassandra.cluster import Cluster
|
||||
from cassandra.decoder import dict_factory
|
||||
@@ -185,7 +186,7 @@ class PrintStatementTests(unittest.TestCase):
|
||||
Highlight the format of printing SimpleStatements
|
||||
"""
|
||||
|
||||
ss = SimpleStatement('SELECT * FROM test3rf.test')
|
||||
ss = SimpleStatement('SELECT * FROM test3rf.test', consistency_level=ConsistencyLevel.ONE)
|
||||
self.assertEqual(str(ss),
|
||||
'<SimpleStatement query="SELECT * FROM test3rf.test", consistency=ONE>')
|
||||
|
||||
@@ -198,6 +199,7 @@ class PrintStatementTests(unittest.TestCase):
|
||||
session = cluster.connect()
|
||||
|
||||
prepared = session.prepare('INSERT INTO test3rf.test (k, v) VALUES (?, ?)')
|
||||
prepared.consistency_level = ConsistencyLevel.ONE
|
||||
|
||||
self.assertEqual(str(prepared),
|
||||
'<PreparedStatement query="INSERT INTO test3rf.test (k, v) VALUES (?, ?)", consistency=ONE>')
|
||||
|
||||
Reference in New Issue
Block a user