· 6 years ago · May 06, 2019, 09:48 PM
1from cassandra.cluster import Cluster
2from cassandra.query import dict_factory
3
4class CassandraClient:
5 def __init__(self, ip='127.0.0.1', port=9042, kayspace='user_ratings', table='user_ratings'):
6 cluster = Cluster([ip], port=port)
7 self.session = cluster.connect()
8 self.keyspace = kayspace
9 self.table = table
10
11 self.columns = {
12 'userID': 'int',
13 'movieID': 'int',
14 'rating': 'float',
15 'genre_Action': 'float',
16 'genre_Adventure': 'float',
17 'genre_Animation': 'float',
18 'genre_Children': 'float',
19 'genre_Comedy': 'float',
20 'genre_Crime': 'float',
21 'genre_Documentary': 'float',
22 'genre_Drama': 'float',
23 'genre_Fantasy': 'float',
24 'genre_Film_Noir': 'float',
25 'genre_Horror': 'float',
26 'genre_IMAX': 'float',
27 'genre_Musical': 'float',
28 'genre_Mystery': 'float',
29 'genre_Romance': 'float',
30 'genre_Sci_Fi': 'float',
31 'genre_Short': 'float',
32 'genre_Thriller': 'float',
33 'genre_War': 'float',
34 'genre_Western': 'float'
35 }
36
37
38 def create_keyspace(self):
39 self.session.execute("""
40 CREATE KEYSPACE IF NOT EXISTS """+self.keyspace+"""
41 WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': '1' }
42 """)
43
44 def create_table(self):
45 self.session.execute("CREATE TABLE IF NOT EXISTS {}.{}".format(self.keyspace,self.table)+
46 " (" + "".join("{} {},\n".format(it[0], it[1]) for it in self.columns.items()) +
47 "PRIMARY KEY(userID, movieID)) ")
48
49 def push_data_table(self, data):
50 _dict = {}
51 for el in self.columns.keys():
52 _dict[el] = data[el]
53
54 self.session.execute("INSERT INTO {}.{}".format(self.keyspace, self.table)+
55 " (" + "".join("{}, ".format(it) for it in self.columns.keys())[:-2]+
56 ") VALUES (" + "".join("%({})s, ".format(it) for it in self.columns.keys())[:-2] +
57 ")",
58 _dict
59 )
60
61 def get_data_table(self):
62 result = []
63 rows = self.session.execute("SELECT " + "".join('{}, '.format(it) for it in self.columns.keys())[:-2] +
64 " FROM {}.{};".format(self.keyspace, self.table))
65
66 for row in rows:
67 _dict = {}
68 for i, el in enumerate(self.columns):
69 _dict[el] = row[i]
70 result.append(_dict)
71 return result