File size: 4,053 Bytes
f1f2090
 
 
5dedebd
 
 
f1f2090
 
9492e32
 
 
 
 
 
 
 
 
 
eb8dea9
9492e32
 
f1f2090
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9492e32
eb8dea9
9492e32
eb8dea9
 
9492e32
f1f2090
eb8dea9
 
5dedebd
 
f1f2090
 
 
6b4e7c6
 
 
 
f1f2090
 
 
f13c4bb
f1f2090
 
6b4e7c6
eb8dea9
 
 
 
f1f2090
 
6b4e7c6
f13c4bb
5dedebd
 
f13c4bb
eb8dea9
 
 
f13c4bb
 
5dedebd
 
6b4e7c6
eb8dea9
 
f1f2090
6b4e7c6
9492e32
 
 
 
 
 
 
 
f1f2090
 
 
 
 
 
 
 
 
 
 
 
 
 
eb8dea9
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import sqlite3
import sys

from util.debug import debug_print
from draw_db import draw_lists, min_max_list, up_down_list
from util.date_util import format_date


def get_filename(file_obj):
    return file_obj.name


def read_db(db_file):
    db_name = get_filename(db_file)
    debug_print('read_db, db_name = ', db_name)
    return read_section(db_name, 'tb_section', '')


def read_section(db_name, tb_name='tb_section', section_id=''):
    res_fig = None
    debug_print('read_section, db_name = ', db_name, ', tb_name = ', tb_name, ', section_id = ', section_id)
    conn = sqlite3.connect(db_name)

    if not tb_name:
        table_cursor = conn.cursor()
        table_cursor.execute(' SELECT name FROM sqlite_master WHERE type=\'table\'; ')
        table_names = table_cursor.fetchall()
        print('table_names = ', str(table_names))
        return

    if not section_id:
        section_cursor = conn.execute(' SELECT section_id, section_date, section_end_date FROM ' + tb_name)
        for section_row in section_cursor:
            section_id = section_row[0]
            section_date = section_row[1]
            section_end_date = section_row[2]
            print('section_id = ', section_id, ', section_date = ', format_date(section_date), ', section_end_date = ',
                  format_date(section_end_date))
            res_fig = read_sample(conn, section_id, tb_name)
    else:
        res_fig = read_sample(conn, section_id, tb_name)

    conn.close()
    return res_fig


def read_sample(conn, section_id, tb_name):
    sql_str = ' SELECT section_id, _sample_id, _sample_end_id, section_date, section_end_date FROM ' + str(
        tb_name) + ' WHERE section_id == ' + str(section_id)
    section_cursor = conn.execute(sql_str)
    for section_row in section_cursor:
        section_id = section_row[0]
        _sample_id = section_row[1]
        _sample_end_id = section_row[2]
        section_date = section_row[3]
        section_end_date = section_row[4]
        debug_print('section_id = ', section_id, ', _sample_id = ', _sample_id, ', _sample_end_id = ',
                    _sample_end_id)

        date_list = []
        max_list = []
        min_list = []
        acc_list = []
        light_list = []
        screen_list = []
        sample_sql = "SELECT _id, date, max, min, acc_max_dx, acc_max_dy, acc_max_dz, avg, max_snoring FROM sample_table WHERE _id >= " + str(
            _sample_id) + ' AND ' + ' _id <= ' + str(_sample_end_id)
        sample_cursor = conn.execute(sample_sql)
        for sample_row in sample_cursor:
            _id = sample_row[0]
            date = sample_row[1]
            _max = sample_row[2]
            _min = sample_row[3]
            acc_max = sample_row[4] + sample_row[5] + sample_row[6]
            light = sample_row[7]
            screen = sample_row[8]
            debug_print('_id = ', _id, 'date = ', format_date(date))

            date_list.append(format_date(date))
            max_list.append(_max)
            min_list.append(_min)
            acc_list.append(acc_max)
            light_list.append(light)
            screen_list.append(screen)

        title_str = str(section_id) + ', ' + str(format_date(section_date)) + ', ' + str(format_date(section_end_date))

        if len(light_list) > 0:
            light_min = min(light_list)
            light_max = max(light_list)
            screen_list = min_max_list(screen_list, light_min, light_max)
            screen_list = up_down_list(screen_list)
        return draw_lists(title_str, date_list, max=max_list, min=min_list, acc=acc_list, screen=screen_list,
                          light=light_list)


if __name__ == '__main__':
    argv = sys.argv[1:]
    argc = len(sys.argv[1:])
    # print('sys.argv[1:] = ', argv, ', ', str(len(argv)))

    if argc < 1:
        print('USAGE: python analysis_db.py xxx.db')
        exit(1)

    db_uri = argv[0] if argc >= 1 else ''
    tb_name = argv[1] if argc >= 2 else ''
    section_id = argv[2] if argc >= 3 else ''
    read_section(db_uri, tb_name, section_id)