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
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package DB.DBComm
#
# @todo:DBComm
# @author hxp
# @date 2025-05-09
# @version 1.0
#
# ÏêϸÃèÊö: DBComm
#
#-------------------------------------------------------------------------------
#"""Version = 2025-05-09 12:20"""
#-------------------------------------------------------------------------------
 
import json
 
class UserDataDict():
    '''¸ù¾ÝÊý¾Ý×Ô¶¨Òå×Ö·û×Ö¶Îת»¯Îª×ֵ䴦Àí£¬¼õÉÙeval£¬·½±ã¿ìËÙ´æÈ¡
    Èç¹ûÐèÒª°´list´æ´¢µÄ£¬½¨Òé¿ÉÒÔ¶¨ÒåÒ»¸ökeyÈ»ºó»¹Êǰ´×ֵ䴿´¢£¬·½±ãÖ®ºóÀ©Õ¹ÆäËûÊôÐÔ
   ËùÒÔËùÓеÄ×Ö·ûÀ©Õ¹Êý¾Ý½¨ÒéͳһÒÔ×ÖµäµÄ¸ñʽ´æ´¢£¬Èë¿âʱ¿Éѡֱ½Óת»¯Îªjson¸ñʽ»òÖ±½Óstr
    '''
    
    def __init__(self, dataObj, dataAttrName, dataLenAttrName, toJson=False):
        '''
        @param dataObj: Êý¾ÝʵÀý¶ÔÏó
        @param dataAttrName: ×Ö·ûÀ©Õ¹ÊôÐÔÃû
        @param dataLenAttrName: ×Ö·ûÀ©Õ¹ÊôÐÔ³¤¶ÈÃû
        '''
        self.__dataObj = dataObj
        self.__dataAttrName = dataAttrName
        self.__dataLenAttrName = dataLenAttrName
        self.__toJson = toJson
        self.__dataDict = None
        return
    
    def GetData(self):
        if self.__dataDict == None:
            try:
                self.__dataDict = eval(getattr(self.__dataObj, self.__dataAttrName))
            except:
                self.__dataDict = {}
        return self.__dataDict
    
    def SetData(self, setValue):
        '''Ö±½ÓÉèÖÃÌæ»»Êý¾Ý
        @param dataStr: ¿ÉÒÔÊÇÈÎÒâÊý¾Ý¸ñʽ£¬Èç¹ûÊÇ×Öµä»á½øÐÐJson»ò×Ö·û´®×ª»¯
        '''
        if not setValue:
            dataStr = ""
        elif isinstance(setValue, dict) and self.__toJson:
            dataStr = json.dumps(setValue, ensure_ascii=False)
        else:
            dataStr = str(setValue)
        dataStr = dataStr.replace(" ", "") # Ìæ»»¿Õ¸ñ£¬¼õÉÙ³¤¶È
        
        if self.__dataObj:
            setattr(self.__dataObj, self.__dataAttrName, dataStr)
            setattr(self.__dataObj, self.__dataLenAttrName, len(dataStr))
            
        if setValue != None and isinstance(setValue, dict) and self.__dataDict != setValue:
            self.__dataDict = setValue
        return
    
    def ToString(self):
        ## ×ª»¯Îª×Ö·û´®
        if self.__dataDict != None:
            self.SetData(self.__dataDict)
        return getattr(self.__dataObj, self.__dataAttrName)