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
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
#-------------------------------------------------------------------------------
#
 
from DBCommon import GlobalFunctions
import traceback
import ConfigParser
import os
 
from DBCommon import error
from Common import mylog
 
#ÅäÖÃ×Öµä
#¸ñʽ£ºkeyname:[defvalue, secionname]£¬ÐÂÔöÅäÖÃÖ»ÒªÔÚÏÂÃæ×ֵ䶨ÒåÖÐÐÂÔöÒ»Ðм´¿É
#Ó÷¨£¬importÄ£¿éºó£¬Ö±½ÓDBConfig.¿ª¹ØÃû³Æ ¼´¿É
dbconfig = {
#auth section
"userdb_user":['', "auth"],
"userdb_pwd":['', 'auth'], 
  
#connect section
"USER_DB_PORT":[27017, "connect"], #MongoDB¶Ë¿Ú
"USER_DB_IP":["localhost", "connect"], #MongoDB IP
"USER_DB_NAME":["GameUser", "connect"], #MongoDB Name
"USER_DB_Log":["GameLog", "connect"], #MongoDB Name
 
#update
"Spid":["test", "update"],    
"Serverid":["s1", "update"],   # Ã»ÓзþÎñÆ÷ID ±êʶ±£³ÖÔ­À´µÄ Ö»¸Ä±äspid  
 
"BeforeSpid":["test", "update"],    
"BeforeServerid":["s1", "update"],  
 
 
def ReadCongfigValue(config, secname, keyname, defvalue):
    try:
        if config.has_option(secname, keyname):
            value = config.get(secname, keyname)
#            if type(defvalue) == str:
#                value = type(defvalue)(value)
            if type(defvalue) == bool:
                value = type(defvalue)(int(value))
            elif type(defvalue) in (dict, list, tuple):
                value = eval(value)
            else:
                value = type(defvalue)(value)
        else:return defvalue  
    except:
        msg = error.formatMsg('error', error.ERROR_NO_18, 'config = %s, secname = %s, keyname = %s, defvalue = %s\n%s'%(config, secname, keyname, defvalue, traceback.format_exc()))
        mylog.error(msg)
        return None 
#    print value
    return value
    
 
    
def ReadDBConfig():
    try:
        config = ConfigParser.ConfigParser()
        config.read(os.path.join(GlobalFunctions.getAppPath(), 'config\\config.ini'))
        
        self_module = __import__(__name__)
 
        #¶ÁÈ¡Êý¾Ý¿âÅäÖÃÎļþ       
        for k, v in dbconfig.items(): 
            value = ReadCongfigValue(config, v[1], k, v[0])
            if value == None:return False
            
            setattr(self_module, k, value)
        
    except:
        msg = error.formatMsg('error', error.ERROR_NO_28, '%s'%traceback.format_exc()) 
        mylog.error(msg)
        return False    
    return True
 
dbconfig_init = False
 
if not dbconfig_init:
    if not ReadDBConfig():
        msg = error.formatMsg('fatal', error.ERROR_NO_29, "Init config failed.")
        mylog.fatal(msg)
    dbconfig_init = True