Skip to content

Instantly share code, notes, and snippets.

@mizchi
Created August 20, 2010 20:25
Show Gist options
  • Select an option

  • Save mizchi/541078 to your computer and use it in GitHub Desktop.

Select an option

Save mizchi/541078 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
sys.path.append('./gen-py')
from thrift import Thrift
from thrift.transport import TTransport
from thrift.transport import TSocket
from thrift.protocol.TBinaryProtocol import TBinaryProtocolAccelerated
from cassandra import Cassandra
from cassandra.ttypes import *
import time, pprint
class CasController(object):
def __init__(self, server , port ,keyspace , column_family ):
self._server = server
self._port = port
self.transport = TTransport.TBufferedTransport(TSocket.TSocket(self._server, self._port))
self.client = Cassandra.Client(TBinaryProtocol.TBinaryProtocolAccelerated(self.transport))
self.set_keyspace(keyspace)
self.set_column_family(column_family)
def set_keyspace(self,name):
self.__keyspace=name
def get_keyspace(self):
return self.__keyspace
def set_column_family(self,name):
self.__column_family=name
def get_column_family(self):
return self.__column_family
def put(self,key,column,value):
column_path = ColumnPath(
column_family=self.get_column_family(),
column=column)
try:
self.transport.open()
self.client.insert(
self.get_keyspace(),
key,
column_path,
value,
time.time(),
ConsistencyLevel.ZERO);
except Thrift.TException, tx:
print 'Thrift: %s' % tx.message
finally:
self.transport.close()
def get(self,key,frm="",to=""):
pp = pprint.PrettyPrinter(indent = 2)
try:
self.transport.open()
column_parent = ColumnParent(column_family="Standard2")
result = self.client.get_slice(
self.get_keyspace(),
key,
column_parent,
SlicePredicate(
# column_names = ColumnNames(["column1","column2"])),
slice_range = SliceRange(
start = frm, finish= to )),
ConsistencyLevel.ONE)
pp.pprint(result)
except Thrift.TException, tx:
print 'Thrift: %s' % tx.message
finally:
self.transport.close()
return result
def test():
server = "localhost"
port = 9160
cc = CasController(server,port,"Keyspace1","Standard2")
cc.put("key","column1","a")
cc.put("key","column2","b")
cc.get("key",frm = "column1",to = "column2")
cc.get("key")
if __name__ == '__main__':
test()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment