def getRankCount(result, rownum, error): count = int(result[0][0]) sql = "select sm_dbid,sm_rank,sm_isRobot from tbl_ArenaRow where sm_rank between " + str( start) + " and " + str(end) @util.dbDeco def rankResult(result, rownum, error): if result is None: return param = [] for i in range(len(result)): dbid = int(result[i][0]) rank = int(result[i][1]) isRobot = int(result[i][2]) item = { "dbid": dbid, "rank": rank, "isRobot": isRobot, "count": count } param.append(item) playerMB.onPlayerMgrCmd("onArenaMgrValueRankResult", param) KBEngine.executeRawDatabaseCommand(sql, rankResult)
def getRankCount(result, rownum, error): count = int(result[0][0]) sql = "select sm_dbid,sm_rank,sm_isRobot from tbl_ArenaRow" ERROR_MSG("--onCmdGetArenaAllRankValue--count" + str(count)) @util.dbDeco def rankResult(result, rownum, error): if result is None: return param = [] for i in range(len(result)): dbid = int(result[i][0]) rank = int(result[i][1]) isRobot = int(result[i][2]) item = { "dbid": dbid, "rank": rank, "isRobot": isRobot, "count": count } param.append(item) argMap["areanList"] = param leagueMgr = KBEngine.globalData["LeagueMgr"] leagueMgr.onCmd("onCmdAreanRankData", argMap) KBEngine.executeRawDatabaseCommand(sql, rankResult)
def initMail(self): filterMap = {"sm_to_dbid": self.databaseID} sql = util.getSelectSql("tbl_Mails", filterValueMap=filterMap) @util.dbDeco def onMailsLoadCB(result, rownum, error): """ 加载邮件 """ if result is None: return for i in range(len(result)): mail = {} mail["mail_type"] = int(result[i][3]) mail["title"] = result[i][4].decode('utf-8') mail["from_name"] = result[i][5].decode('utf-8') mail["text"] = result[i][6].decode('utf-8') mail["time"] = int(result[i][7]) mail["attachment"] = result[i][8].decode('utf-8') mail["state"] = int(result[i][9]) mail["extern_info"] = result[i][10].decode('utf-8') self.mails.insert(i, mail) DEBUG_MSG("mails load complete!") KBEngine.executeRawDatabaseCommand(sql, onMailsLoadCB)
def update( self, callback, *args, **kwargs): """ 例子:更新字段id = 123的条目的数据 xxx.filter(id = 123).update( cb, (field2, value1), (field2, value2), fieldN = valueN ) 回调格式: def callback(success, rows): pass """ assert self.model is not None where = self.build_where_clauses(*self.filters) paramsKey = [] paramsVal = [] kw = list(args) + list(kwargs.items()) for k, v in kw: if hasattr(v, "resolve_expression"): paramsKey.append( "{} = {}".format( self.meta.fields[k].db_column, v.resolve_expression(self.meta) ) ) else: paramsKey.append( "{} = %s".format( self.meta.fields[k].db_column ) ) paramsVal.append( v ) cmd = "UPDATE {} SET {}".format( self.meta.db_table, ", ".join( paramsKey ) ) cmd = MysqlUtility.makeSafeSql( cmd, paramsVal ) + where #DEBUG_MSG( "%s::update(), %s" % (self.__class__.__name__, cmd) ) KBEngine.executeRawDatabaseCommand( cmd, functools.partial( self._update_callback, cmd, callback ) )
def _dbCmdSelectCB(resultCollect, num, errorInfo): DEBUG_MSG(resultCollect) DEBUG_MSG(num) # DEBUG_MSG(errorInfo) if errorInfo is not None: DEBUG_MSG("error") KBEngine.executeRawDatabaseCommand( "CREATE TABLE mini_Spaces (name VARCHAR(255) NOT NULL DEFAULT '' primary key, dbid BIGINT)", _dbCmdCreateTblCB) else: DEBUG_MSG("not error") if not resultCollect: DEBUG_MSG("resultCollect == []") bigWorld = KBEngine.createBaseLocally("BigWorld", {}) if bigWorld: DEBUG_MSG("create bigWorld success") bigWorld.writeToDB(_bigWorldSavedCB) # KBEngine.executeRawDatabaseCommand("INSERT INTO mini_Spaces VALUES ('BigWorld', 0)", # _dbCmdInsertBigWorldCB) else: ERROR_MSG("create bigWorld failed") else: for value in resultCollect: if value[0] == b'BigWorld': DEBUG_MSG("==b") if value[1] != 0: KBEngine.createBaseFromDBID( "BigWorld", int(value[1].decode('ascii')), _onBigWorldCreateCB) DEBUG_MSG(int(value[1].decode('ascii'))) return
def addFriend(self, name): sqlCommond = "SELECT * FROM tbl_account WHERE sm_Name = '" + name + "'" # 数据库查询回调 def sqlcallback(result, row, insertid, errstr): if errstr: # 输出错误信息 ERROR_MSG("Account[%i].reqChangeName:[%s]" % (self.id, errstr)) elif len(result) == 0: # 不存在角色名字 self.client.reqMessageCall("名字为 " + name + " 的角色不存在") DEBUG_MSG("Account[%i].addFriend:[%s] || 该角色名不存在" % (self.id, name)) elif len(result) != 0: # 名字存在 dbid = int(result[0][0]) level = int(result[0][3]) # 检测在线回调 def lookUpEntityCallBack(result): if result == True: self.client.reqMessageCall("名字为 " + name + " 的角色不在线") DEBUG_MSG("lookUpEntityCallBack : 玩家不在线") elif result == False: DEBUG_MSG("lookUpEntityCallBack : 其他原因") else: DEBUG_MSG("lookUpEntityCallBack : 玩家在线") #像该id实体的客户端发送好友请求 KBEngine.entities[ result.id].client.reqAddFriendMessage( self.id, self.Name) # 检查该DBID对应实体是否检出 也就是是否在线 KBEngine.lookUpEntityByDBID("Account", dbid, lookUpEntityCallBack) # 查询数据库 KBEngine.executeRawDatabaseCommand(sqlCommond, sqlcallback)
def onCmdInsertArenaRank(self, param): selfDBID = param["selfDBID"] isRobot = param["isRobot"] sql = "INSERT INTO tbl_ArenaRow (sm_dbid, sm_rank,sm_isRobot)VALUES(" + str( selfDBID ) + "," + "( SELECT IFNULL(max(t.sm_rank) + 1,1) FROM tbl_ArenaRow t)," + str( isRobot) + ")" @util.dbDeco def cb(result, rownum, error): if isRobot == 0: sql1 = "SELECT sm_rank FROM tbl_ArenaRow AS a WHERE a.sm_dbid = " + str( selfDBID) + " AND a.sm_isRobot = 0" @util.dbDeco def findMyRank(result, rownum, error): if result is None: return rank = int(result[0][0]) playerMB = param["playerMB"] item = { "rank": rank, } playerMB.onPlayerMgrCmd("defaultMyRank", item) KBEngine.executeRawDatabaseCommand(sql1, findMyRank) KBEngine.executeRawDatabaseCommand(sql, cb, self.id)
def __init__(self): self.uuid2pid = {} self.accountName2pid = {} self.cachedInfos = {} # SELECT sm_name,sm_wealth FROM const.DB_NAME.tbl_Avatar; def queryDatabaseCallBack(result, num, error): if error is None: if result is not None: DEBUG_MSG("result is not None, len(result)=%s, num=%s" % (len(result), num)) for item in result: DEBUG_MSG("sm_uuid: %i sm_name: %s, sm_wealth: %i " % (int(item[0]), str(item[1]), int(item[2]))) self.cachedInfos[int(item[0])] = { 'uuid':int(item[0]), 'name':str(item[1], "utf-8"), 'characterNum':int(item[2]), 'gender':int(item[3]), 'userId':int(item[4]), 'dbid':int(item[5]), 'curPower':int(item[6]), 'blockFriends':int(item[7]), } else: ERROR_MSG("queryDatabaseCallBack result is None. result=%s, num=%s, error=%s" % (result, num, error)) else: ERROR_MSG("queryDatabaseCallBack error=%s" % (error)) KBEngine.executeRawDatabaseCommand("SELECT `sm_uuid`,`sm_name`, `sm_characterNum`, \ `sm_gender`, `sm_userId`, `id`, `sm_curPower`, `sm_blockFriends` FROM "+const.DB_NAME+".tbl_Avatar;", queryDatabaseCallBack) return
def sendFriendGiftByDBID(self, dbid, gift): DEBUG_MSG("Space[%i].sendFriendGiftByDBID %i success." % (self.id, dbid)) # INSERT sm_name,sm_wealth FROM const.DB_NAME.tbl_Avatar; def insertDatabaseCallBack(result, num, error): if error is not None: ERROR_MSG("Space[%i].sendFriendGiftByDBID %i insertDatabaseCallBack Fail." % (self.id, dbid)) return DEBUG_MSG("Space[%i] insertDatabaseCallBack %i -- %i %s success." % (self.id, dbid, num, str(result))) # def queryDatabaseCallBack(result, num, error): # if error is not None: # ERROR_MSG("Space[%i].sendFriendGiftByDBID %i queryDatabaseCallBack Fail." % (self.id, dbid)) # return # if len(result) != 1: # ERROR_MSG("Space[%i].sendFriendGiftByDBID %i queryDatabaseCallBack result:%s is error." % (self.id, dbid, str(result))) # return # for item in gift["attachment"]: # KBEngine.executeRawDatabaseCommand("INSERT INTO "+const.DB_NAME+".tbl_Avatar_giftList_attachment (parentID, sm_itemId, sm_count) VALUES(%i, %i, %i);" # % (int(result[0][0]), item["itemId"], item["count"]), None) # KBEngine.executeRawDatabaseCommand("SELECT `id` FROM "+const.DB_NAME+".tbl_Avatar_giftList WHERE sm_mid = %i;" % gift["mid"], queryDatabaseCallBack) KBEngine.executeRawDatabaseCommand("INSERT INTO "+const.DB_NAME+".tbl_Avatar_canGetFriendGiftList (parentID, sm_gid, sm_time) VALUES(%i, %f, %f);" % (dbid, gift["gid"], gift["time"]), insertDatabaseCallBack) return
def sendMailByDBID(self, dbid, mail): DEBUG_MSG("Space[%i].sendMailByDBID %i success." % (self.id, dbid)) # INSERT sm_name,sm_wealth FROM const.DB_NAME.tbl_Avatar; def insertDatabaseCallBack(result, num, error): if error is not None: ERROR_MSG("Space[%i].sendMailByDBID %i insertDatabaseCallBack Fail." % (self.id, dbid)) return DEBUG_MSG("Space[%i] insertDatabaseCallBack %i -- %i %s success." % (self.id, dbid, num, str(result))) def queryDatabaseCallBack(result, num, error): if error is not None: ERROR_MSG("Space[%i].sendMailByDBID %i queryDatabaseCallBack Fail." % (self.id, dbid)) return if len(result) != 1: ERROR_MSG("Space[%i].sendMailByDBID %i queryDatabaseCallBack result:%s is error." % (self.id, dbid, str(result))) return for item in mail["attachment"]: KBEngine.executeRawDatabaseCommand("INSERT INTO "+const.DB_NAME+".tbl_Avatar_mailList_attachment (parentID, sm_itemId, sm_count) VALUES(%i, %i, %i);" % (int(result[0][0]), item["itemId"], item["count"]), None) KBEngine.executeRawDatabaseCommand("SELECT `id` FROM "+const.DB_NAME+".tbl_Avatar_mailList WHERE sm_mid = %i;" % mail["mid"], queryDatabaseCallBack) KBEngine.executeRawDatabaseCommand("INSERT INTO "+const.DB_NAME+".tbl_Avatar_mailList (parentID, sm_mid, sm_type, sm_time, sm_title, sm_info, sm_from) VALUES(%i, %i, %i, %f, \"%s\", \"%s\", \"%s\");" % (dbid, mail["mid"], mail["type"], mail["time"], mail["content"]["title"], mail["content"]["info"], mail["from"]), insertDatabaseCallBack) return
def find(self, fields, cb, table=None): """ :param fields: select 的字段列表 :param cb: 回调函数,参数有两个(result_list, error),表示结果列表和错误信息 :param table: 表结构名 :return: """ _table = self._get_table(table) filter_phase = self._get_filter_phase() if filter_phase: sql = "SELECT {fields} FROM {table} WHERE {filter_phase}".format( table=_table, fields=",".join(fields), filter_phase=self._gen_filter_phase(filter_phase)) else: sql = "SELECT {fields} FROM {table}".format( fields=",".join(fields), table=_table) if self._orders: order_phase = self._get_order_phase() sql += order_phase if self._limit: sql += " limit %s" % self._limit DEBUG_MSG("DML::find sql: %s" % sql) KBEngine.executeRawDatabaseCommand( sql, Functor(self.find_cb, cb, fields, _table, sql))
def initOfflineData(self): colTuple = ("id", "sm_name", "sm_photoIndex", "sm_level", "sm_club", "sm_fightValue", "sm_vipLevel", "sm_logoutTime") sql = util.getSelectSql("tbl_Avatar", colTuple) @util.dbDeco def queryResult(result, rownum, error): for item in result: playerInfo = {} playerInfo[FriendInfoKey.DBID] = int(item[0]) playerInfo[FriendInfoKey.name] = item[1].decode('utf-8') playerInfo[FriendInfoKey.photoIndex] = str(item[2]) playerInfo[FriendInfoKey.level] = int(item[3]) playerInfo[FriendInfoKey.clubName] = item[4].decode('utf-8') playerInfo[FriendInfoKey.fightValue] = int(item[5]) playerInfo[FriendInfoKey.vipLevel] = int(item[6]) playerInfo[FriendInfoKey.onlineState] = int(item[7]) self.dbidToOfflinePlayerInfo[playerInfo[ FriendInfoKey.DBID]] = playerInfo self.allPlayerInfo.append(playerInfo) self.allPlayerInfo.sort(key=lambda x: (x[ FriendInfoKey.onlineState], x[FriendInfoKey.level])) KBEngine.executeRawDatabaseCommand(sql, queryResult)
def findAvatarByUserId(user_id, callback=None): select_sql = "SELECT {} FROM {}.tbl_Avatar WHERE sm_userId={}".format( ','.join(UINFO_DEFAULT), switch.DB_NAME, user_id) def select_cb(result, rows, insertid, error): # DEBUG_MSG("findAvatarByUserId result:", result) if result: result = result[0] user_info = { 'id': int(result[0]), 'uuid': int(result[1]), 'userId': int(result[2]), 'accountName': str(result[3], 'utf-8'), 'name': str(result[4], 'utf-8'), 'head_icon': str(result[5], 'utf-8'), 'sex': int(result[6]), 'isAgent': int(result[7]), 'login_time': int(result[8]), 'logout_time': int(result[9]), } # DEBUG_MSG("findAvatarByUserId result:", user_info) callable(callback) and callback(user_info, None) else: callable(callback) and callback(None, None) if error: ERROR_MSG("dbi findAvatarByUserId Error = {}".format(error)) KBEngine.executeRawDatabaseCommand(select_sql, select_cb)
def reqChangeName(self, name): """ 数据库查询语句 "SELECT * FROM tbl_account WHERE sm_Name = '" + name + "'" "SELECT * FROM kbe.tbl_account WHERE sm_Name = '" + name + "'" """ sqlCommond = "SELECT * FROM tbl_account WHERE sm_Name = '" + name + "'" #回调函数 def sqlcallback(result, row, insertid, errstr): if errstr: #输出错误信息 ERROR_MSG("Account[%i].reqChangeName:[%s]" % (self.id, errstr)) self.client.reqChangeNameCall(errstr) elif len(result) == 0: #不存在则注册名字 if name == "": return self.Name = name DEBUG_MSG("Account[%i].reqChangeName:[%s]" % (self.id, name)) # 写入数据库 回调函数暂无 self.writeToDB() self.client.reqChangeNameCall("success") elif len(result) != 0: #告诉客户端 名字已存在 DEBUG_MSG("该名字已存在") self.client.reqChangeNameCall("repetition") #查询数据库 KBEngine.executeRawDatabaseCommand(sqlCommond, sqlcallback)
def readMail(self, mailTime): findKey = -1 mailsCount = len(self.mails) state = Mails.Mail_State_read @util.dbDeco def updateSucCB(result, rownum, error): if findKey != -1: self.mails[findKey]["state"] = state self.client.onOperateSuc("readMail") for i in range(mailsCount): mail = self.mails[i] if mail["time"] == mailTime: if mail["state"] != Mails.Mail_State_Not_Open: return findKey = i if mail["attachment"] != "": state = Mails.Mail_State_Has_Open_Not_Get setValueMap = {"state": state} filterValueMap = {"to_dbid": self.databaseID, "time": mailTime} sql = util.getUpdateSql("tbl_Mails", setValueMap, filterValueMap) KBEngine.executeRawDatabaseCommand(sql, updateSucCB) break
def reqCash(self, amount, alipay): #请求兑现 retcode = 0 income = 0 if self.alipay != alipay: self.alipay = alipay #进行写入兑现数据表操作,并扣去玩家对应金额 if (self.gold - amount) >= d_users["base_money"]: self.gold -= amount if amount <= d_users["duixian_base"]: income = d_users["duixian_base_fee"] else: income += d_users["duixian_base_fee"] rate = (int)((amount - d_users["duixian_base"]) / d_users["duixian_add"]) remain = (int)((amount - d_users["duixian_base"]) % (int)(d_users["duixian_add"])) income += rate * d_users["duixian_add_fee"] if remain > 0: income += d_users["duixian_add_fee"] curAmount = amount - income KBEngine.globalData["Games"].addIncome(income) sql = "insert into TBL_WITHDDRAW(USER,ZHIFUBAO_NUMBER,ADDTIME,AMOUNT) values('%s','%s','%s','%s')" \ % (self.__ACCOUNT_NAME__,self.alipay,datetime.now(),str(curAmount)) KBEngine.executeRawDatabaseCommand(sql, None) else: retcode = -1 if self.client: self.client.onCash(retcode, self.gold, self.alipay)
def userPaySuccess(self, cmd): proxy, user_id, count = cmd[0], int(cmd[1]), int(cmd[2]) DEBUG_MSG("PlayerChargeCard cmd {0}->{1}->{2}.".format( proxy, user_id, count)) for k in self.avatars: p = self.avatars[k] if p.userId == user_id: DEBUG_MSG( "PlayerChargeCard Succeed {0}->{1}->{2} Online.".format( proxy, user_id, count)) p.addCards(count) p.writeToDB() break else: DEBUG_MSG("TO DATABASE {0}->{1}->{2} Online.".format( proxy, user_id, count)) # 玩家下线, 直接写入数据库 def updateDatabaseCallBack(result, num, insert_id, error): if error is not None: ERROR_MSG("PlayerChargeCard Failed {0}->{1}->{2}.".format( proxy, user_id, count)) return DEBUG_MSG( "PlayerChargeCard Succeed {0}->{1}->{2} num={3} result={4}." .format(proxy, user_id, count, num, str(result))) cmd = "UPDATE {0}.tbl_Avatar SET sm_cards = sm_cards + {1} WHERE sm_userID = {2}".format( const.DB_NAME, count, user_id) KBEngine.executeRawDatabaseCommand(cmd, updateDatabaseCallBack)
def insertDatabaseCallBack(result, num, insert_id, error): if error is not None: ERROR_MSG( "Space[%i].sendMailByDBID %i insertDatabaseCallBack Fail." % (self.id, dbid)) return DEBUG_MSG("Space[%i] insertDatabaseCallBack %i -- %i %s success." % (self.id, dbid, num, str(result))) def queryDatabaseCallBack(result, num, insert_id, error): if error is not None: ERROR_MSG( "Space[%i].sendMailByDBID %i queryDatabaseCallBack Fail." % (self.id, dbid)) return if len(result) != 1: ERROR_MSG( "Space[%i].sendMailByDBID %i queryDatabaseCallBack result:%s is error." % (self.id, dbid, str(result))) return for item in mail["attachment"]: KBEngine.executeRawDatabaseCommand( "INSERT INTO " + const.DB_NAME + ".tbl_Avatar_mailList_attachment (parentID, sm_itemId, sm_count) VALUES(%i, %i, %i);" % (int(result[0][0]), item["itemId"], item["count"]), None) KBEngine.executeRawDatabaseCommand( "SELECT `id` FROM " + const.DB_NAME + ".tbl_Avatar_mailList WHERE sm_mid = %i;" % mail["mid"], queryDatabaseCallBack)
def CheckCanSteal(self, stealDBID, ByStealDBID, callback): sql = "select count(*) from kbe.tbl_Account_Land_LandData where parentID in (select id from kbe.tbl_Account_Land where parentID = %i) \ and sm_stage = 6 and sm_surpHarvest > (sm_Harvest/2) and not find_in_set('%i',sm_StealList) " % ( ByStealDBID, stealDBID) KBEngine.executeRawDatabaseCommand( sql, Functor.Functor(self.CanStealsqlcallback, stealDBID, ByStealDBID, callback))
def onTick(timerID): """ """ INFO_MSG('onTick()') # 测试数据库查询 KBEngine.executeRawDatabaseCommand( "select * from kbe_accountinfos limit 3;", onSqlCallback)
def onTick(timerID): """ """ INFO_MSG('onTick()') # 测试数据库查询 KBEngine.executeRawDatabaseCommand("select * from kbe_accountinfos limit 3;", onSqlCallback) KBEngine.urlopen("https://www.baidu.com", onHttpCallback)
def init_database(): def create_callback(result, rows, insert_id, errorCode): DEBUG_MSG("room record init_database: {0}, {1}, {2},{3}".format( result, rows, insert_id, errorCode)) KBEngine.executeRawDatabaseCommand( 'CREATE TABLE IF NOT EXISTS {0} ( id INT NOT NULL AUTO_INCREMENT,record_id INT,player_id_list VARCHAR(255) NOT NULL, record TEXT NOT NULL, create_time DATETIME,PRIMARY KEY (id)) DEFAULT CHARSET = utf8;' .format(const.TABLE_GAME_RECORD_NAME), create_callback)
def _onBigWorldCreateCB(baseRef, dbid, wasActive): if baseRef is None: DEBUG_MSG("_onBigWorldCreateCB-failed") KBEngine.executeRawDatabaseCommand("SELECT * from mini_Spaces", _dbCmdSelectCB) # KBEngine.executeRawDatabaseCommand("INSERT INTO MiniGame.tbl_BigWorld VALUES(0,0,0,0,0,0,0,0,0)", _dbCmdCB) else: DEBUG_MSG("_onBigWorldCreateCB-success")
def insertDatabaseCallBack(result, num, insert_id, error): cmd = '' parentID = insert_id for x in all_list: if x['userId'] <= 0: continue cmd = 'INSERT INTO {0}.tbl_Avatar_rank_detailed (parentID, sm_userId, sm_nickname, sm_score) VALUES({1}, {2},"{3}",{4});' \ .format(const.DB_NAME, parentID, x['userId'], x['nickname'], x['score']) KBEngine.executeRawDatabaseCommand(cmd, None)
def _insert_record(self, record_id, player_id_list, record): def insert_callback(result, rows, insert_id, error): DEBUG_MSG('insert_callback {0}, {1}, {2}, {3}'.format(result, rows, insert_id, error)) del self.recordNoneCache[record_id] sql = 'INSERT INTO {0} (record_id, player_id_list,record,create_time) VALUES ("{1}", "{2}","{3}","{4}")' \ .format(const.TABLE_GAME_RECORD_NAME, record_id, json.dumps(player_id_list), re.escape(record), datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) KBEngine.executeRawDatabaseCommand(sql, insert_callback)
def reqCreateRole(self, name, career): self.params = { "name": name, "career": career, "level": 1, } KBEngine.executeRawDatabaseCommand( "select * from tbl_Role where sm_name='%s'" % name, self.sqlcallback)
def findFriends(self, exposed): """ 返回数据库中的所有注册人员在客户端进行比对,在客户端检测是否有此搜索朋友 """ DEBUG_MSG("FindFriends") avatarId = self.id KBEngine.globalData["avatarId"] = self.id DEBUG_MSG(avatarId) KBEngine.executeRawDatabaseCommand( "SELECT sm_entityName from tbl_Avatar", _getAllEntityName)
def deleteClub(club_id, callback=None): delete_sql = "DELETE FROM {}.tbl_Avatar_clubList WHERE sm_value={}".format(switch.DB_NAME, club_id) def delete_cb(result, rows, insertid, error): if error: ERROR_MSG("kickOutClub delete_cb Error = {}".format(error)) callable(callback) and callback(False, error) else: callable(callback) and callback(True, None) KBEngine.executeRawDatabaseCommand(delete_sql, delete_cb)
def delMail(self, mailTime): @util.dbDeco def delSucCB(result, rownum, error): for i in range(len(self.mails)): if self.mails[i]["time"] == mailTime: del self.mails[i] break filterValueMap = {"to_dbid": self.databaseID, "time": mailTime} sql = util.getDelSql("tbl_Mails", filterValueMap) KBEngine.executeRawDatabaseCommand(sql, delSucCB)
def insertIntoAvatarClubList(dbid, club_id, callback=None): insert_sql = "INSERT INTO {}.tbl_Avatar_clubList (`parentID`,`sm_value`) VALUES ({}, {})".format(switch.DB_NAME, dbid, club_id) def insert_cb(result, rows, insertid, error): if error: ERROR_MSG("dbi insertIntoAvatarClubList result = {} {}".format(result, (rows, insertid, error))) callable(callback) and callback(False, error) else: callable(callback) and callback(True, None) KBEngine.executeRawDatabaseCommand(insert_sql, insert_cb)
def onBaseAppReady(isBootstrap): """ KBEngine method. baseapp已经准备好了 @param isBootstrap: 是否为第一个启动的baseapp @type isBootstrap: BOOL """ bootIdxGroup = int(os.getenv("KBE_BOOTIDX_GROUP")) bootIdxGlobal = int(os.getenv("KBE_BOOTIDX_GLOBAL")) INFO_MSG('onBaseAppReady: isBootstrap=%s, bootstrapGroupIndex=%s, bootstrapGlobalIndex=%s' % (isBootstrap, bootIdxGroup, bootIdxGlobal)) table_vex = "map_%s_vex" % (bootIdxGroup) table_arc = "map_%s_arc" % (bootIdxGroup) table_triangle = "map_%s_triangle" % (bootIdxGroup) cmd = "CREATE TABLE IF NOT EXISTS `%s`(`id` BIGINT UNSIGNED NOT NULL, `campId` TINYINT NOT NULL, `position_x` INT NOT NULL, `position_y` INT NOT NULL, PRIMARY KEY(`id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;" % (table_vex) KBEngine.executeRawDatabaseCommand(cmd, None, bootIdxGlobal) cmd = "CREATE TABLE IF NOT EXISTS `%s`(`id1` BIGINT UNSIGNED NOT NULL, `id2` BIGINT UNSIGNED NOT NULL) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;" % (table_arc) KBEngine.executeRawDatabaseCommand(cmd, None, bootIdxGlobal) cmd = "CREATE TABLE IF NOT EXISTS `%s`(`id1` BIGINT UNSIGNED NOT NULL, `id2` BIGINT UNSIGNED NOT NULL, `id3` BIGINT UNSIGNED NOT NULL) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;" % (table_triangle) KBEngine.executeRawDatabaseCommand(cmd, None, bootIdxGlobal) cmd = "SELECT `id`, `campId`, `position_x`, `position_y` FROM `%s`;" % (table_vex) KBEngine.executeRawDatabaseCommand(cmd, dbGetVexs, bootIdxGlobal) cmd = "SELECT `id1`, `id2` FROM `%s`;" % (table_arc) KBEngine.executeRawDatabaseCommand(cmd, dbGetArcs, bootIdxGlobal) cmd = "SELECT `id1`, `id2`, `id3` FROM `%s`;" % (table_triangle) KBEngine.executeRawDatabaseCommand(cmd, dbGetTriangles, bootIdxGlobal)