Example #1
0
    def syncDB(self):
        """同步到数据库
        """

        state = self.get('_state')
        tablename = self._name.split(':')[0]
        if state == MMODE_STATE_ORI:
            return
        elif state == MMODE_STATE_NEW:
            props = self.get('data')
            pk = self.get('_pk')
            util.InsertIntoDB(tablename, props)
        #             result = util.InsertIntoDB(tablename, props)
        elif state == MMODE_STATE_UPDATE:
            props = self.get('data')
            pk = self.get('_pk')
            prere = {pk: props.get(pk)}
            util.UpdateWithDict(tablename, props, prere)
        #             result = True
        else:
            pk = self.get('_pk')
            props = self.get('data')
            if props:
                prere = {pk: props.get(pk)}
                util.DeleteFromDB(tablename, prere)
                #             result = util.DeleteFromDB(tablename, prere)
                self.mdelete()
            else:
                logging.error('syncDB pk:%s is not data' % str(pk))

        #         logger.debug('syncDB,tbname:%s,%s:%s' %(tablename, pk, props.get(pk)))
        #         if result:  平台缺陷,2014-6-20修改 http://bbs.9miao.com/thread-49154-1-1.html
        if state != MMODE_STATE_DEL:
            MemObject.update(self, '_state', MMODE_STATE_ORI)
Example #2
0
 def __init__(self, name,pk,data={},fk=None,**kw):
     """
     """
     MemObject.__init__(self, name,**kw)
     self._pk = pk
     self._fk = fk
     self.data = data
Example #3
0
 def __init__(self, name,pk,timeout=TIMEOUT,**kw):
     MemObject.__init__(self, name, mclient)
     self._pk = pk
     self._fk = kw.get('fk','')
     self._incrkey = kw.get('incrkey','')
     self._incrvalue = kw.get('incrvalue',0)
     self._timeout = timeout
Example #4
0
 def syncDB(self):
     """同步到数据库
     """
     state = self.get('_state')
     tablename = self._name.split(':')[0]
     if state == MMODE_STATE_ORI:
         return
     elif state == MMODE_STATE_NEW:
         props = self.get('data')
         props = self.dumps(props)
         pk = self.get('_pk')
         result = util.InsertIntoDB(tablename, props)
     elif state == MMODE_STATE_UPDATE:
         props = self.get('data')
         pk = self.get('_pk')
         props = self.dumps(props)
         prere = {pk: props.get(pk)}
         del(props[pk])
         util.UpdateWithDict(tablename, props, prere)
         result = True
     else:
         pk = self.get('_pk')
         props = self.get('data')
         props = self.dumps(props)
         prere = {pk: props.get(pk)}
         result = util.DeleteFromDB(tablename, prere)
     if result:
         MemObject.update(self, '_state', MMODE_STATE_ORI)
Example #5
0
 def __init__(self, name, pk, timeout=TIMEOUT, **kw):
     MemObject.__init__(self, name, mclient)
     self._pk = pk
     self._fk = kw.get('fk', '')
     self._incrkey = kw.get('incrkey', '')
     self._incrvalue = kw.get('incrvalue', 0)
     self._timeout = timeout
Example #6
0
 def __init__(self, name, pk, data={}, fk=None, **kw):
     """
     """
     MemObject.__init__(self, name, **kw)
     self._pk = pk
     self._fk = fk
     self.data = data
Example #7
0
    def update_multi(self,
                     mapping,
                     isSyncNow=False):  # 如果改用redis将不允许非全字段更新,必须全表更新。
        if len(mapping) == 0:
            return
        ntime = time.time()
        data = self.get_multi(['data', '_state'])
        data['data'].update(mapping)
        if data.get('_state') == MMODE_STATE_NEW:
            props = {'data': data.get('data'), '_time': ntime}
            result = MemObject.update_multi(self, props)
            if isSyncNow:
                self.syncDB()
        else:
            props = {
                '_state': MMODE_STATE_UPDATE,
                'data': data.get('data'),
                '_time': ntime
            }
            result = MemObject.update_multi(self, props)
            if isSyncNow:
                self.syncDB()

        if not isSyncNow:
            pkval = data.get('data').get(self._pk)
            rdsclient.zadd(self.dszset, self.produceRedisKey(pkval), ntime)
        return result
Example #8
0
 def syncDB(self):
     """同步到数据库
     """
     state = self.get('_state')
     tablename = self._name.split(':')[0]
     if state == MMODE_STATE_ORI:
         return
     elif state == MMODE_STATE_NEW:
         props = self.get('data')
         props = self.dumps(props)
         pk = self.get('_pk')
         result = util.InsertIntoDB(tablename, props)
     elif state == MMODE_STATE_UPDATE:
         props = self.get('data')
         pk = self.get('_pk')
         props = self.dumps(props)
         prere = {pk: props.get(pk)}
         del(props[pk])
         util.UpdateWithDict(tablename, props, prere)
         result = True
     else:
         pk = self.get('_pk')
         props = self.get('data')
         props = self.dumps(props)
         prere = {pk: props.get(pk)}
         result = util.DeleteFromDB(tablename, prere)
     if result:
         MemObject.update(self, '_state', MMODE_STATE_ORI)
Example #9
0
 def __init__(self, name, pk, timeout=TIMEOUT, **kw):
     MemObject.__init__(self, name, mclient)
     self._pk = pk
     self._fk = kw.get('fk', '')
     self._incrkey = kw.get('incrkey', '')  # 当数据库主键为自增时,这里传入值为Id,自动补充id
     self._incrvalue = kw.get('incrvalue', 0)  # 为0时Id自增
     self._timeout = timeout
Example #10
0
 def __init__(self, name,pk,data={}):
     """
     """
     MemObject.__init__(self, name, mclient)
     self._state = MMODE_STATE_ORI#对象的状态 0未变更  1新建 2更新 3删除
     self._pk = pk
     self.data = data
     self._time = time.time()
Example #11
0
 def __init__(self, name, pk, data={}):
     """
     """
     MemObject.__init__(self, name, mclient)
     self._state = MMODE_STATE_ORI  #对象的状态 0未变更  1新建 2更新 3删除
     self._pk = pk
     self.data = data
     self._time = time.time()
Example #12
0
 def insert(self):
     #print "MAdmin insert %s %s %s"%(self._name,self._incrkey,self.get("_incrvalue"));
     if self._incrkey and not self._incrvalue:
         memkey = self.get("_incrvalue")
         if not memkey:
             memkey = util.GetTableIncrValue(self._name)
         self._incrvalue = memkey
         #print "MAdmin insert gettable %s"%(self._incrvalue);
     MemObject.insert(self)
Example #13
0
    def __init__(self, pid, name, mc):
        """

        """
        MemObject.__init__(self, name, mc)
        self.id = pid
        self.level = 0
        self.profession = 0
        self.nickname = u""
        self.guanqia = 1000
Example #14
0
    def __init__(self,pid,name,mc):
        """

        """
        MemObject.__init__(self, name, mc)
        self.id = pid
        self.level = 0
        self.profession = 0
        self.nickname = u''
        self.guanqia = 1000
Example #15
0
 def delete(self, isSyncNow=True):
     '''删除对象
     '''
     if isSyncNow:
         MemObject.update(self, '_state', MMODE_STATE_DEL)  # add by fage
         self.syncDB()
     else:
         MemObject.update(self, '_state', MMODE_STATE_DEL)
         pkval = self.get('data').get(self._pk)
         rdsclient.zadd(self.dszset, self.produceRedisKey(pkval), time.time())
Example #16
0
 def __init__(self,pid,name,mc):
     """初始化城镇要塞对象
     @param territoryId: int 领地的ID
     @param guard: int 殖民者的ID
     @param guardname: str 殖民者的名称
     @param updateTime: int 领地被更新的时间
     """
     MemObject.__init__(self, name, mc)
     self.id = pid
     self.level = 0
     self.profession = 0
     self.nickname = u''
     self.guanqia = 1000
Example #17
0
 def __init__(self, pid, name, mc):
     """初始化城镇要塞对象
     @param territoryId: int 领地的ID
     @param guard: int 殖民者的ID
     @param guardname: str 殖民者的名称
     @param updateTime: int 领地被更新的时间
     """
     MemObject.__init__(self, name, mc)
     self.id = pid
     self.level = 0
     self.profession = 0
     self.nickname = u''
     self.guanqia = 1000
Example #18
0
 def checkSync(self,timeout=TIMEOUT):
     """检测同步
     """
     ntime = time.time()
     objtime = MemObject.get(self, '_time')
     self.syncDB()
     if ntime  -objtime>=timeout and timeout:
         self.mdelete()
Example #19
0
 def checkSync(self, timeout=TIMEOUT):
     """检测同步
     """
     ntime = time.time()
     objtime = MemObject.get(self, '_time')
     self.syncDB()
     if ntime - objtime >= timeout and timeout:
         self.mdelete()
Example #20
0
 def update(self, key, values):
     data = self.get_multi(['data', '_state'])
     ntime = time.time()
     data['data'].update({key: values})
     if data.get('_state') == MMODE_STATE_NEW:
         props = {'data': data.get('data'), '_time': ntime}
     else:
         props = {'_state': MMODE_STATE_UPDATE, 'data': data.get('data'), '_time': ntime}
     return MemObject.update_multi(self, props)
Example #21
0
 def update(self, key, values):
     data = self.get_multi(['data','_state'])
     ntime = time.time()
     data[key] = values
     if data.get('_state')==1:
         props = {'data':data.get('data'),'_time':ntime}
     else:
         props = {'_state':2,'data':data.get('data'),'_time':ntime}
     return MemObject.update_multi(self,props)
Example #22
0
 def checkSync(self, timeout=TIMEOUT):
     """检测同步
     """
     ntime = time.time()
     objtime = MemObject.get(self, '_time')
     if ntime - objtime >= timeout and timeout:
         self.mdelete()
     else:
         reactor.callLater(0, self.syncDB)
Example #23
0
 def update(self, key, values):
     data = self.get_multi(['data', '_state'])
     ntime = time.time()
     data[key] = values
     if data.get('_state') == 1:
         props = {'data': data.get('data'), '_time': ntime}
     else:
         props = {'_state': 2, 'data': data.get('data'), '_time': ntime}
     return MemObject.update_multi(self, props)
Example #24
0
 def update_multi(self, mapping):
     ntime = time.time()
     data = self.get_multi(['data', '_state'])
     data['data'].update(mapping)
     if data.get('_state') == 1:
         props = {'data': data.get('data'), '_time': ntime}
     else:
         props = {'_state': 2, 'data': data.get('data'), '_time': ntime}
     return MemObject.update_multi(self, props)
Example #25
0
 def update_multi(self, mapping):
     n_time = time.time()
     data = self.get_multi(['data', '_state'])
     data['data'].update(mapping)
     if data.get('_state') == MMODE_STATE_NEW:
         props = {'data': data.get('data'), '_time': n_time}
     else:
         props = {'_state': MMODE_STATE_UPDATE, 'data': data.get('data'), '_time': n_time}
     return MemObject.update_multi(self, props)
Example #26
0
 def update_multi(self, mapping):
     ntime = time.time()
     data = self.get_multi(['data','_state'])
     data['data'].update(mapping)
     if data.get('_state')==1:
         props = {'data':data.get('data'),'_time':ntime}
     else:
         props = {'_state':2,'data':data.get('data'),'_time':ntime}
     return MemObject.update_multi(self, props)
Example #27
0
 def update_multi(self, mapping):
     n_time = time.time()
     data = self.get_multi(['data', '_state'])
     data['data'].update(mapping)
     if data.get('_state') == MMODE_STATE_NEW:
         props = {'data': data.get('data'), '_time': n_time}
     else:
         props = {'_state': MMODE_STATE_UPDATE, 'data': data.get('data'), '_time': n_time}
     return MemObject.update_multi(self, props)
Example #28
0
 def checkSync(self, timeout=TIMEOUT):
     """检测同步
     """
     ntime = time.time()
     objtime = MemObject.get(self, '_time')
     if ntime - objtime >= timeout and timeout:
         self.mdelete()
     else:
         reactor.callLater(0, self.syncDB)
Example #29
0
 def update(self, key, values):
     data = self.get_multi(['data','_state'])
     ntime = time.time()
     data['data'].update({key:values})
     if data.get('_state')==MMODE_STATE_NEW:
         props = {'data':data.get('data'),'_time':ntime}
     else:
         props = {'_state':MMODE_STATE_UPDATE,'data':data.get('data'),'_time':ntime}
     return MemObject.update_multi(self, props)
Example #30
0
 def update(self, key, values):
     data = self.getData()
     if self._fk and self._fk==key:#判断外键是否更新
         fk = data.get(self._fk,"")
         pk = data.get(self._pk)
         self._update_fk(pk, fk, values)#更新外键
     data.update({key:values})
     result = MemObject.update(self, 'data',data)
     self.syncDB()
     return result
Example #31
0
 def update(self, key, values):
     data = self.getData()
     if self._fk and self._fk == key:  #判断外键是否更新
         fk = data.get(self._fk, "")
         pk = data.get(self._pk)
         self._update_fk(pk, fk, values)  #更新外键
     data.update({key: values})
     result = MemObject.update(self, 'data', data)
     self.syncDB()
     return result
Example #32
0
    def update(self, key, value):
        data = self.getData()
        fkName = self._mAdmin.getFk()
        pkName = self._mAdmin.getPk()
        if fkName and fkName == key:
            fk = data.get(fkName, "")
            pk = data.get(pkName)
            self._updateFk(pk, fk, value)

        data[key] = value
        return MemObject.update(self, 'data', data) and self._updateDB(data[pkName], {key:value})
Example #33
0
 def update_multi(self, mapping):
     data = self.getData()
     if self._fk and self._fk in mapping.keys():#查看外键是否在更新的map中
         fk = data.get(self._fk,"")
         new_fk = mapping.get(self._fk,fk)
         if new_fk!=fk:#查看外键的值是否发生了变化
             pk = data.get(self._pk)
             self._update_fk(pk, fk, new_fk)#更新外键
     data.update(mapping)
     result = MemObject.update(self, 'data',data)
     self.syncDB()
     return result
Example #34
0
 def update_multi(self, mapping):
     data = self.getData()
     if self._fk and self._fk in mapping.keys():  #查看外键是否在更新的map中
         fk = data.get(self._fk, "")
         new_fk = mapping.get(self._fk, fk)
         if new_fk != fk:  #查看外键的值是否发生了变化
             pk = data.get(self._pk)
             self._update_fk(pk, fk, new_fk)  #更新外键
     data.update(mapping)
     result = MemObject.update(self, 'data', data)
     self.syncDB()
     return result
Example #35
0
    def update(self, key, values):
        data = self.get_multi(['data', '_state'])
        ntime = time.time()
        data['data'].update({key: values})
        if data.get('_state') == MMODE_STATE_NEW:
            props = {'data': data.get('data'), '_time': ntime}
        else:
            props = {'_state': MMODE_STATE_UPDATE, 'data': data.get('data'), '_time': ntime}

        pkval = data.get('data').get(self._pk)
        rdsclient.zadd(self.dszset, self.produceRedisKey(pkval), ntime)
        return MemObject.update_multi(self, props)
Example #36
0
 def update_mem_only(self, mapping):
     """更新缓存数据不同步数据库"""
     if len(mapping) == 0:
         return
     ntime = time.time()
     data = self.get_multi(['data'])
     data['data'].update(mapping)
     props = {
         'data': data.get('data'),
         '_time': ntime
     }  # 不同步sql,所以不写入redis,不修改状态
     result = MemObject.update_multi(self, props)
     return result
Example #37
0
 def syncDB(self):
     """同步到数据库
     """
     state = self.get('_state')
     tablename = self._name.split(':')[0]
     if state == 0:
         return
     elif state == 1:
         props = self.get('data')
         pk = self.get('_pk')
         result = util.InsertIntoDB(tablename, props)
     elif state == 2:
         props = self.get('data')
         pk = self.get('_pk')
         prere = {pk: props.get(pk)}
         util.UpdateWithDict(tablename, props, prere)
         result = True
     else:
         pk = self.get('_pk')
         props = self.get('data')
         prere = {pk: props.get(pk)}
         result = util.DeleteFromDB(tablename, prere)
     if result:
         MemObject.update(self, '_state', 0)
Example #38
0
 def syncDB(self):
     """同步到数据库
     """
     state = self.get('_state')
     tablename = self._name.split(':')[0]
     if state==0:
         return
     elif state==1:
         props = self.get('data')
         pk = self.get('_pk')
         result = util.InsertIntoDB(tablename, props)
     elif state==2:
         props = self.get('data')
         pk = self.get('_pk')
         prere = {pk:props.get(pk)}
         util.UpdateWithDict(tablename, props, prere)
         result = True
     else:
         pk = self.get('_pk')
         props = self.get('data')
         prere = {pk:props.get(pk)}
         result = util.DeleteFromDB(tablename,prere)
     if result:
         MemObject.update(self,'_state', 0)
Example #39
0
    def updateMulti(self, updateData):
        if not updateData:
            return False

        data = self.getData()
        fkName = self._mAdmin.getFk()
        pkName = self._mAdmin.getPk()
        if fkName and fkName in updateData.keys():
            fk = data.get(fkName, "")
            new_fk = updateData.get(fkName, fk)
            if new_fk != fk:
                pk = data.get(pkName)
                self._updateFk(pk, fk, new_fk)

        data.update(updateData)
        return MemObject.update(self, 'data', data) and self._updateDB(data[pkName], updateData)
Example #40
0
 def update(self, key, values):
     data = self.getData()
     if self._fk and self._fk==key:
         fk = data.get(self._fk,"")
         tb_name = self._name.split(":")[0]
         old_name = '%s_fk:%s'%(tb_name,fk)
         pk = data.get(self._pk)
         old_fkmm = MFKMode(old_name)
         old_pklist = old_fkmm.get('pklist')
         if old_pklist and pk in old_pklist:
             old_pklist.remove(pk)
             old_fkmm.update('pklist', old_pklist)
         new_name = '%s_fk:%s'%(tb_name,values)
         new_fkmm = MFKMode(new_name)
         new_pklist = new_fkmm.get('pklist')
         if new_pklist and pk not in new_pklist:
             new_pklist.append(pk)
             new_fkmm.update('pklist', new_pklist)
     data.update({key:values})
     result = MemObject.update(self, 'data',data)
     self.syncDB()
     return result
Example #41
0
 def update(self, key, values):
     data = self.getData()
     if self._fk and self._fk == key:
         fk = data.get(self._fk, "")
         tb_name = self._name.split(":")[0]
         old_name = '%s_fk:%s' % (tb_name, fk)
         pk = data.get(self._pk)
         old_fkmm = MFKMode(old_name)
         old_pklist = old_fkmm.get('pklist')
         if old_pklist and pk in old_pklist:
             old_pklist.remove(pk)
             old_fkmm.update('pklist', old_pklist)
         new_name = '%s_fk:%s' % (tb_name, values)
         new_fkmm = MFKMode(new_name)
         new_pklist = new_fkmm.get('pklist')
         if new_pklist and pk not in new_pklist:
             new_pklist.append(pk)
             new_fkmm.update('pklist', new_pklist)
     data.update({key: values})
     result = MemObject.update(self, 'data', data)
     self.syncDB()
     return result
Example #42
0
 def insert(self):
     if self._incrkey:
         self._incrvalue = util.GetTableIncrValue(self._name)
     MemObject.insert(self)
Example #43
0
 def insert(self):
     """将MAdmin配置的信息写入memcached中保存。\n当在其他的进程中实例化相同的配置的MAdmin,可以使得数据同步。
     """
     if self._incrkey and not self.get("_incrvalue"):
         self._incrvalue = util.GetTableIncrValue(self._name)
     MemObject.insert(self)
Example #44
0
 def __init__(self, name,pk,data={}):
     MemObject.__init__(self, name, mclient)
     self._state = 0#对象的状态 0未变更  1新建 2更新 3删除
     self._pk = pk
     self.data = data
     self._time = time.time()
Example #45
0
 def insert(self):
     if self._incrkey:
         self._incrvalue = util.GetTableIncrValue(self._name)
     MemObject.insert(self)
Example #46
0
 def get(self, key):
     n_time = time.time()
     MemObject.update(self, "_time", n_time)
     return MemObject.get(self, key)
Example #47
0
 def __init__(self, name,pklist = []):
     MemObject.__init__(self, name, mclient)
     self.pklist = pklist
Example #48
0
 def mdelete(self):
     """清理对象
     """
     self.syncDB()
     MemObject.mdelete(self)
Example #49
0
 def mdelete(self):
     """清理对象
     """
     self.syncDB()
     MemObject.mdelete(self)
Example #50
0
 def get_multi(self, keys):
     ntime = time.time()
     MemObject.update(self, "_time", ntime)
     return MemObject.get_multi(self, keys)
Example #51
0
 def insert(self):
     if self._incrkey and not self.get("_incrvalue"):
         self._incrvalue = util.GetTableIncrValue(self._name)
     MemObject.insert(self)
Example #52
0
 def delete(self):
     """删除对象
     """
     return MemObject.update(self, '_state', MMODE_STATE_DEL)
Example #53
0
 def get(self, key):
     n_time = time.time()
     MemObject.update(self, "_time", n_time)
     return MemObject.get(self, key)
Example #54
0
 def get_multi(self, keys):
     ntime = time.time()
     MemObject.update(self, "_time", ntime)
     return MemObject.get_multi(self, keys)
Example #55
0
 def insert(self):
     """将MAdmin配置的信息写入memcached中保存。\n当在其他的进程中实例化相同的配置的MAdmin,可以使得数据同步。
     """
     if self._incrkey and not self.get("_incrvalue"):
         self._incrvalue = util.GetTableIncrValue(self._name)
     MemObject.insert(self)
Example #56
0
 def delete(self):
     """删除对象
     """
     return MemObject.update(self, '_state', MMODE_STATE_DEL)
Example #57
0
 def delete(self):
     '''删除对象
     '''
     return MemObject.update(self,'_state',3)
Example #58
0
 def delete(self):
     '''删除对象
     '''
     return MemObject.update(self,'_state',MMODE_STATE_DEL)
Example #59
0
 def __init__(self, name, pklist=[]):
     MemObject.__init__(self, name, mclient)
     self.pklist = pklist
Example #60
0
 def get_multi(self, keys):
     return MemObject.get_multi(self, keys)