Files
deb-python-cassandra-driver/cassandra/query.py
2013-05-22 18:45:28 -05:00

59 lines
1.6 KiB
Python

import struct
from cassandra import ConsistencyLevel
from cassandra.decoder import (cql_encoders, cql_encode_object,
cql_encode_map_collection,
cql_encode_set_collection,
cql_encode_list_collection)
class Query(object):
retry_policy = None
tracing_enabled = False
consistency_level = ConsistencyLevel.ONE
routing_key = None
class SimpleStatement(Query):
def __init__(self, query_string):
self._query_string = query_string
self._routing_key = None
@property
def routing_key(self):
return self._routing_key
@routing_key.setter
def set_routing_key(self, value):
self._routing_key = "".join(struct.pack("HsB", len(component), component, 0)
for component in value)
@property
def query_string(self):
return self._query_string
class ColumnCollection(object):
def __init__(self, sequence):
self.sequence = sequence
def __str__(self):
s = self.sequence
if isinstance(s, dict):
return cql_encode_map_collection(s)
elif isinstance(s, (set, frozenset)):
return cql_encode_set_collection(s)
else:
return cql_encode_list_collection(s)
def bind_params(query, params):
if isinstance(params, dict):
return query % dict((k, cql_encoders.get(type(v), cql_encode_object)(v))
for k, v in params.iteritems())
else:
return query % tuple(cql_encoders.get(type(v), cql_encode_object)(v)
for v in params)