Created
August 20, 2010 20:25
-
-
Save mizchi/541078 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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