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)
def __init__(self, name,pk,data={},fk=None,**kw): """ """ MemObject.__init__(self, name,**kw) self._pk = pk self._fk = fk self.data = data
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
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)
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
def __init__(self, name, pk, data={}, fk=None, **kw): """ """ MemObject.__init__(self, name, **kw) self._pk = pk self._fk = fk self.data = data
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
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
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()
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()
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)
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
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
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())
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
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
def checkSync(self,timeout=TIMEOUT): """检测同步 """ ntime = time.time() objtime = MemObject.get(self, '_time') self.syncDB() if ntime -objtime>=timeout and timeout: self.mdelete()
def checkSync(self, timeout=TIMEOUT): """检测同步 """ ntime = time.time() objtime = MemObject.get(self, '_time') self.syncDB() if ntime - objtime >= timeout and timeout: self.mdelete()
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)
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)
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)
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)
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)
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)
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)
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)
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
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
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})
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
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
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)
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
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)
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)
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)
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
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
def insert(self): if self._incrkey: self._incrvalue = util.GetTableIncrValue(self._name) MemObject.insert(self)
def insert(self): """将MAdmin配置的信息写入memcached中保存。\n当在其他的进程中实例化相同的配置的MAdmin,可以使得数据同步。 """ if self._incrkey and not self.get("_incrvalue"): self._incrvalue = util.GetTableIncrValue(self._name) MemObject.insert(self)
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()
def get(self, key): n_time = time.time() MemObject.update(self, "_time", n_time) return MemObject.get(self, key)
def __init__(self, name,pklist = []): MemObject.__init__(self, name, mclient) self.pklist = pklist
def mdelete(self): """清理对象 """ self.syncDB() MemObject.mdelete(self)
def get_multi(self, keys): ntime = time.time() MemObject.update(self, "_time", ntime) return MemObject.get_multi(self, keys)
def insert(self): if self._incrkey and not self.get("_incrvalue"): self._incrvalue = util.GetTableIncrValue(self._name) MemObject.insert(self)
def delete(self): """删除对象 """ return MemObject.update(self, '_state', MMODE_STATE_DEL)
def delete(self): '''删除对象 ''' return MemObject.update(self,'_state',3)
def delete(self): '''删除对象 ''' return MemObject.update(self,'_state',MMODE_STATE_DEL)
def __init__(self, name, pklist=[]): MemObject.__init__(self, name, mclient) self.pklist = pklist
def get_multi(self, keys): return MemObject.get_multi(self, keys)