server.py.tmp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import re
  2. from adeireader.adeireader import ADEIReader
  3. ###
  4. def x_mysql(host, dbname, dbtable, user='', passwd='', fields=''):
  5. from gluon.dal import MySQLAdapter
  6. db_setting = dict(host=host, dbname=dbname, dbtable=dbtable, dbuser=user, dbpass=passwd)
  7. print db_setting
  8. # DAL initialize
  9. db0 = DAL("mysql://%(dbuser)s:%(dbpass)s@%(host)s/%(dbname)s" % db_setting,
  10. migrate=False,
  11. lazy_tables=True)
  12. # extract fileds from description
  13. fields = db0.executesql('show columns from %(dbtable)s;' % db_setting)
  14. db0._adapter.execute('SELECT * FROM %(dbtable)s LIMIT 1;' % db_setting)
  15. #print db0.get_instances()
  16. #print db0._adapter.types
  17. #print db0._adapter.cursor.description
  18. #print fields
  19. # extract fields
  20. #db0 =
  21. ###
  22. server_config = '''
  23. # name/host/db/table
  24. fpd katrin.kit.edu/adei fpd katrin_rep
  25. orca status:status@mysql://127.0.0.1 test_status experiment1
  26. '''
  27. config_adei = {}
  28. config_mysql = {}
  29. regex_adei = re.compile('[^/]*/(adei)')
  30. regex_mysql = re.compile('(?P<user>.+):(?P<pass>.+)@mysql://(?P<host>.*)')
  31. for dbkey, hostname, dbname, dbtable in [ x.strip().split()
  32. for x in server_config.strip().split('\n') if not x.strip().startswith('#') ]:
  33. if regex_adei.match(hostname):
  34. if dbkey not in config_adei.keys():
  35. config_adei[dbkey] = (hostname, dbname, dbtable)
  36. continue
  37. m = regex_mysql.match(hostname)
  38. if m:
  39. if dbkey not in config_mysql.keys():
  40. h, u, p = ( m.group('host'), m.group('user'), m.group('pass') )
  41. config_mysql[dbkey] = ( h, dbname, dbtable, u, p)
  42. continue
  43. # error message
  44. print 'nothing is matched'
  45. adei_servers = {}
  46. for s in config_adei:
  47. print s
  48. mysql_servers = {}
  49. for k, settings in config_mysql.iteritems():
  50. print k, settings
  51. #from extractdb import extract_mysql as x_mysql
  52. mysql_servers[k] = x_mysql(*settings)
  53. #import pprint
  54. #print '\n'.join(repr(u) for u in globals() if not u.startswith('__'))