Browse Source

update sqlconfig

Chuan Miao 9 years ago
parent
commit
2c841ceead
2 changed files with 31 additions and 22 deletions
  1. 22 20
      applications/katrin/models/api/sql.py
  2. 9 2
      applications/katrin/models/config_servers.py

+ 22 - 20
applications/katrin/models/api/sql.py

@@ -3,7 +3,7 @@ import hashlib
 import re
 import time
 
-field_types = dict(
+dal_field_type = dict(
     id='id',
     bit='boolean',
     tinyint='boolean',
@@ -20,12 +20,12 @@ session.sql_servers = sql_servers
 session.sql_fields = []
 
 for c in sql_servers:
-    host     = c['host']
-    server   = c['server']
-    database = c['database']
-    tables   = c['tables']
-    fields   = c['fields']
-    filters  = c['filters']
+    host       = c['host']
+    server     = c['server']
+    database   = c['database']
+    tables     = c['tables']
+    ignore_fields  = c['field_ignore']
+    field_type_fix = c['field_type_fix']
 
     #_db = 'sql_' + hashlib.md5(server).hexdigest()
     _db = 'sql_' + server
@@ -41,25 +41,27 @@ for c in sql_servers:
         dal_fields = []
         for fld_name, fld_type, _, fld_key, _, _ in cols:
             field_long_name = '%s.%s' % (tab, fld_name)
-            if field_long_name in filters:
+            if field_long_name in ignore_fields:
                 continue
-            # extract filed type (typ) and filed length (length)
-            m = re.match('(.*)\((.*)\)', fld_type)
-            if m:
-                fld_type = m.group(1)
-                length = int(m.group(2))
+            if field_long_name in field_type_fix.keys():
+                fld_type = field_type_fix[field_long_name]
             else:
-                length = None
-            # if fld_key is 'PRI', then fld_type is 'id'
+                m = re.match('(.*)\((.*)\)', fld_type)
+                if m:
+                    fld_type = m.group(1)
+                    fld_length = int(m.group(2))
+                else:
+                    length = None
             if fld_key == 'PRI': 
                 fld_type = 'id'
-            if field_long_name in fields.keys():
-                fld_type = fields[field_long_name]
-            field_names.append(dict(name=fld_name, type=fld_type))
             if fld_type == 'mediumblob':
-                pass
+                field_names.append(dict(name=fld_name, type=fld_type))
+                continue
             else:
-                dal_fields.append(Field(fld_name, type=field_types[fld_type], length=length))
+                field_names.append(dict(name=fld_name, type=fld_type))
+                dal_fields.append(Field(fld_name, \
+                                        type=dal_field_type[fld_type], \
+                                        length=fld_length))
 
         globals()[_db].define_table(tab, *dal_fields)
         session.sql_fields.append(dict(server=server, table=tab, fields=field_names))

+ 9 - 2
applications/katrin/models/config_servers.py

@@ -20,12 +20,19 @@ sql_servers = [
     'host': 'mysql://status:status@192.168.32.181',
     'database': 'orca',
     'tables': ['runs', 'machines', 'experiment'] ,
-    'fields': {
+    'field_ignore': [ 
+        'machines.password',
+        'experiment.ratesstr',
+    ],
+    'field_type_fix': {
         'experiment.ratesstr': 'text',
         'experiment.totalCountsstr': 'text',
         'experiment.thresholdsstr': 'text',
         'experiment.gainsstr': 'text'
     },
-    'filters': [ 'machines.password', 'experiment.ratesstr' ]
+    'selector': {
+        'all': [{},{}],
+        'last': [{-1},{}]
+    }
 }
 ]