/
model-1.py
96 lines (76 loc) · 2.61 KB
/
model-1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
from cassandra.cqlengine import columns
from cassandra.cqlengine import connection
from cassandra.cqlengine.models import Model
from cassandra.cqlengine.usertype import UserType
from cassandra.cqlengine import management
import api
class Air(UserType):
psi = columns.Integer()
pm2_5 = columns.Integer()
class Sun(UserType):
sunset = columns.Time()
sunrise = columns.Time()
class Rain(UserType):
rain_10min = columns.Float()
rain_60min = columns.Float()
rain_3hr = columns.Float()
rain_6hr = columns.Float()
rain_12hr = columns.Float()
rain_24hr = columns.Float()
class Basic(UserType):
wind_dir_10min = columns.Integer()
wind_speed_10min = columns.Float()
humd = columns.Float()
temp = columns.Float()
class Value(UserType):
sun = columns.Integer()
weather = columns.Integer()
uv = columns.Integer()
rain = columns.Integer()
air = columns.Integer()
predict = columns.Integer()
class Weather(Model):
date = columns.Date(primary_key=True)
time = columns.DateTime(primary_key=True)
uv = columns.Float()
air = columns.UserDefinedType(Air)
sun = columns.UserDefinedType(Sun)
rain = columns.UserDefinedType(Rain)
basic = columns.UserDefinedType(Basic)
value = columns.UserDefinedType(Value)
predict = columns.Map(columns.Text, columns.List(columns.Text))
# transform int to str for db need
def trasformPredictMetrics(data):
data['humid'] = map(lambda x: str(x), data['humid'])
data['predictRate'] = map(lambda x: str(x), data['predictRate'])
data['temp'] = map(lambda x: str(x), data['temp'])
return data
# transform int to str for db need
def trasformPredictMetricsToInt(data):
res = {}
if 'predictTime' in data:
res['predictTime'] = data['predictTime']
res['time'] = data['time']
res['humid'] = []
res['predictRate'] = []
res['temp'] = []
for i in data['humid']:
res['humid'].append(int(i))
for i in data['predictRate']:
res['predictRate'].append(int(i))
for i in data['temp']:
res['temp'].append(int(i))
return res
def main():
# create a keyspace "test"
connection.setup(['140.121.101.164'], "weather1")
management.create_keyspace_simple('weather1', 3)
# connect to test keyspace
connection.setup(['140.121.101.164'], "weather1", protocol_version=3)
management.sync_type('test', Air)
management.sync_type('test', Sun)
management.sync_type('test', Rain)
management.sync_type('test', Basic)
management.sync_type('test', Value)
management.sync_table(Weather)
# main()