if __name__ == '__main__': #['10.15.62.100:9160','10.15.62.101:9160','10.15.62.102:9160'] pool = ConnectionPool('Cassandra_Test',['10.107.4.187:9160']) print pool # cf_map = ColumnFamilyMap(User, pool, 'Users') col_fam = ColumnFamily(pool, 'Users') print col_fam.get('author') print col_fam.get_count('author') col_fam.insert('row_key', {'col_name': 'col_val'}) col_fam.insert('row_key', {'col_name':'col_val', 'col_name2':'col_val2'}) col_fam.batch_insert({'row1': {'name1': 'val1', 'name2': 'val2'},'row2': {'foo': 'bar'}}) #col_fam.insert('super_key', {'key':{'col_name':'col_val', 'col_name2':'col_val2'}}) print col_fam.get_count('row_key', columns=['foo', 'bar']) print col_fam.get_count('row_key', column_start='foo') print col_fam.multiget_count(['fib0', 'fib1', 'fib2', 'fib3', 'fib4']) print col_fam.multiget_count(['fib0', 'fib1', 'fib2', 'fib3', 'fib4'],columns=['col1', 'col2', 'col3']) print col_fam.multiget_count(['fib0', 'fib1', 'fib2', 'fib3', 'fib4'],column_start='col1', column_finish='col3') print col_fam.get_count('row_key') print col_fam.get('row_key') print col_fam.get('author') print col_fam.get('row_key', columns=['col_name', 'col_name2']) print col_fam.get('row_key', column_reversed=True, column_count=3) print col_fam.multiget(['row1', 'row2']) for i in range(1, 10): col_fam.insert('row_key', {str(i): 'val'}) print col_fam.get('row_key', column_start='5', column_finish='7') result = col_fam.get_range(start='row_key5', finish='row_key7') for key, columns in result: print key, '=>', columns #Supper column
def multiget_count(self, *args, **kwargs): col_fam = ColumnFamily(self.pool, self.__column_family__) return col_fam.multiget_count(*args, **kwargs)
class CassandraDemo(object): def __init__(self, database, table): self.database = database self.table = table def create_connections(self): self.pool = ConnectionPool(self.database) self.cf = ColumnFamily(self.pool, self.table) def create_database_and_table(self): super_cf = False # consider super columns to be deprecated s = SystemManager() # create keyspace if it doesn't exist if database not in s.list_keyspaces(): s.create_keyspace(database, SIMPLE_STRATEGY, {'replication_factor': '1'}) # delete column family from the keyspace if it does exist. if table in s.get_keyspace_column_families(database): s.drop_column_family(database, table) # create coulmn family in the keyspace if table not in s.get_keyspace_column_families(database): print("table is creating...") s.create_column_family(database, table, super = super_cf, comparator_type = ASCII_TYPE) s.close() return True def insert_data(self): print '\nemployee data is inserting...' self.cf.insert('1', {'fn':'yogesh', 'ln':'kumar', 'ct': 'Ajmer', 'em': '*****@*****.**'}) self.cf.insert('2', {'fn':'amit', 'ln':'pandita', 'ct': 'Delhi', 'em': '*****@*****.**'}) self.cf.insert('3', {'fn':'sandeep', 'ln':'tak', 'ct': 'Ajmer', 'em': '*****@*****.**', 'mb': '8890467032'}) def get_data(self): print '\nemployee data is featching...' data1 = self.cf.get('1') data2 = self.cf.get('2', columns = ['fn', 'ln', 'em']) data3 = self.cf.get('3', column_start = 'ct', column_finish = 'fn') data4 = self.cf.get('1', column_reversed = False, column_count = 3) data5 = self.cf.get('1', column_reversed = True, column_count = 3) print data1 print data2 print data3 print data4 print data5 def get_multiple_data(self): print '\ngetting multiple employees data...' row_keys = ['1','2','3'] data = self.cf.multiget(row_keys) print data def get_data_by_range(self): ''' if you get an error don't worry about this, it's a Cassandra limitation Issue ''' print '\ngetting employees data by range...' start_row_key = '1' end_row_key = '3' data = self.cf.get_range(start = start_row_key, finish = end_row_key) for key, columns in data: print key,coulmns def get_count(self): print '\nget employee row\'s colunm count' print self.cf.get_count('1') print self.cf.get_count('1', columns = ['fn', 'ln']) print self.cf.get_count('1', column_start = 'em') def get_multi_count(self): print '\nget multiple employees row\'s colunm count' row_keys = ['1','2','3'] columns = ['fn', 'ln', 'mb'] column_start = 'ct' column_finish = 'fn' print self.cf.multiget_count(row_keys) print self.cf.multiget_count(row_keys, columns = columns) print self.cf.multiget_count(row_keys, column_start = column_start, column_finish = column_finish) def update_data(self): print '\nemployee data is updating...' self.cf.insert('1', {'pwd':'yoku@2010', 'ct':'Noida'}) def delete_data(self): print '\ndelete data from employee' row = '2' self.cf.remove(row) def get_all_rows(self): print '\ngetting rows name...' print [v[0] for v in self.cf.get_range()] def get_all_columns_of_row(self): print '\ngetting columns name of a row' row = '1' data = self.cf.get(row) print data.keys()
name_cf.insert('sacharya3', {'last_name': x}) names3 = name_cf.get('sacharya3') print "List as a value" print names3 attrs = dict([(attr_name, set([attr_values])) for attr_name, attr_values in names3.iteritems()]) name_cf.insert("sacharya3", {'last_name': attrs['last_name'].append("acharya3")}) print name_cf.get('sacharya3') ################################# COUNT ####################################### # Count the number of columns for the row key count=author_cf.get_count("sacharya1") print count count=author_cf.multiget_count(["sacharya1","sacharya2"]) print count ################################## REMOVE ##################################### # Remove the column for the row key and column key print "Removing the column last_name for row key sacharya1" author_cf.remove('sacharya1', columns=['last_name']) time.sleep(5) authors = author_cf.get('sacharya') print authors # REMOVE the entire row author_cf.remove('sacharya') try: time.sleep(5)