· 6 years ago · Sep 24, 2019, 08:10 AM
1from cassandra.cluster import Cluster
2from cassandra.query import dict_factory
3
4
5def create_keyspace(session, keyspace):
6 session.execute("""
7 CREATE KEYSPACE IF NOT EXISTS """+keyspace+"""
8 WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': '1' }
9 """)
10
11
12def create_table(session, keyspace, table):
13 session.execute("""
14 CREATE TABLE IF NOT EXISTS """+ keyspace+"""."""+table+""" (
15 user_id int ,
16 avg_movie_rating float,
17 PRIMARY KEY(user_id)
18 )
19 """)
20
21
22def push_data_table(session, keyspace, table, userId, avgMovieRating):
23 session.execute(
24 """
25 INSERT INTO """+keyspace+"""."""+table+""" (user_id, avg_movie_rating)
26 VALUES (%(user_id)s, %(avg_movie_rating)s)
27 """,
28 {
29 'user_id': userId,
30 'avg_movie_rating': avgMovieRating
31 }
32 )
33
34
35def get_data_table(session, keyspace, table):
36 rows = session.execute("SELECT * FROM "+keyspace+"."+table+";")
37 for row in rows:
38 print(row)
39
40
41def clear_table(session, keyspace, table):
42 session.execute("TRUNCATE "+keyspace+"."+table+";")
43
44
45def delete_table(session, keyspace, table):
46 session.execute("DROP TABLE "+keyspace+"."+table+";")
47
48
49if __name__ == "__main__":
50 keyspace = "user_ratings"
51 table = "user_avg_rating"
52 # utworzenia połączenia z klastrem
53 cluster = Cluster(['127.0.0.1'], port=9042)
54 session = cluster.connect()
55 # utworzenie nowego keyspace
56 create_keyspace(session, keyspace)
57 # ustawienie używanego keyspace w sesji
58 session.set_keyspace(keyspace)
59 # użycie dict_factory pozwala na zwracanie słowników
60 # znanych z języka Python przy zapytaniach do bazy danych
61 session.row_factory = dict_factory
62 # tworzenie tabeli
63 create_table(session, keyspace, table)
64 # umieszczanie danych w tabeli
65 push_data_table(session, keyspace, table, userId=1337, avgMovieRating=4.2)
66 # pobieranie zawartości tabeli i wyświetlanie danych
67 get_data_table(session, keyspace, table)
68 # czyszczenie zawartości tabeli
69 clear_table(session, keyspace, table)
70 get_data_table(session, keyspace, table)
71 # usuwanie tabeli
72 delete_table(session, keyspace, table)