1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import re
- from itertools import groupby
- from gluon.dal import DAL, Field
- from config import sql_databases
- from kitcube import KITCube
- from helper import process_views
- kitcube = {}
- for database in sql_databases:
- if database['disabled']: continue
-
- db_key = database['key']
- db_host = database['host']
- db = database['db']
- modules = database['modules']
- views = database.get('views', None)
- connector = KITCube(db_key, db_host, db)
- connector.views = process_views(views)
- if isinstance(modules, basestring):
- connector.module_pattern = modules
- else:
- connector.modules = modules
- connector.connect()
- kitcube[db_key] = connector
- ### Save DB meta info into database
- info = DAL('sqlite://info.storage.sqlite',
- pool_size=10,
- check_reserved=False)
- info.define_table('sql_db',
- Field('key', 'string'),
- Field('host', 'string'),
- Field('db', 'string'),
- Field('modules', 'list:integer'),
- Field('flag', 'boolean', default=False))
- info.define_table('sql_module',
- Field('mark', 'integer'),
- Field('name', 'string'),
- Field('db_id', 'reference sql_db'))
- info.define_table('sql_sensor',
- Field('name', 'string'),
- Field('type', 'string'),
- Field('unit', 'string'),
- Field('length', 'integer'),
- Field('rname', 'string'),
- Field('module_name', 'string'),
- Field('db_id', 'reference sql_db'),
- Field('module_id', 'reference sql_module'))
-
- for connector in kitcube.values():
- q = (info.sql_db.db==db) & (info.sql_db.host==db_host)
- r = info(q).select().last()
- if r is None:
- modules = connector.modules
- sensors = connector.sensors
- module_marks = [ m['mark'] for m in modules]
- module_ids = {}
- db_id = info.sql_db.insert(key=db_key, host=db_host,
- db=db, modules=module_marks)
- for m in modules:
- module_id = info.sql_module.insert(db_id=db_id, **m)
- module_ids[m['name']] = module_id
- for s in sensors:
- module_id = module_ids[ s['module_name'] ]
- info.sql_sensor.insert(db_id=db_id, module_id=module_id, **s)
- else:
- if r.key != db_key:
- r.update_record(key=db_key)
|