游戏服务器之角色数据管理工具(python版)

之所以要做个工具,是方便非程序人员也可以容易操作和管理数据库,进而可以管理游戏程序。

使用python作为工具是python容易写图形工具,而原来的项目也用到python作为逻辑脚本。

1、python 的一个第三方库wx图形支持

2、mysql角色数据管理

3、redis角色数据管理


1、python 的一个第三方库wx图形支持

python 的一个第三方库wx可以提供一些图形支持,支持事件循环和响应。

if __name__ == "__main__":
    import sys
    reload(sys)
    sys.setdefaultencoding('utf8')#设置编码
    #app = wx.PySimpleApp(True, 'log.txt')
    app = wx.PySimpleApp()#创建一个应用程序,wx.PySimpleApp 
    frame = MainFrame(None)#MainFrame(wx.Frame)
    gSetMainframe(frame)
    frame.Show()
    app.MainLoop()#开始图形事件循环

管理工具以一个标签页来作为工具的一部分而存在。

检查页的ui是一个wx.Panel  : class VerifyDataUI(wx.Panel) 


功能是查询、删除redis和mysql的角色数据。


2、mysql角色数据管理

(1)mysql数据访问

首先需要说明的是mysql的查询用到orm的技术(对象关系映射,使用到的第三方库是sqlalchemy),而角色表的orm内容如下:

含有角色id、角色背包(二进制)、角色商城背包(二进制)、角色仓库(二进制)、角色技能(二进制)。

#导入sqlalchemy 的类和类型

from sqlalchemy import Table, Column

from sqlalchemy.dialects.mysql import TINYINT, SMALLINT, INTEGER, BIGINT, \
TEXT, CHAR, VARCHAR, FLOAT, DATETIME, MEDIUMTEXT, BLOB
from sqlalchemy.orm import Mapper
from core.db.connect import metadata, TableObject

#类Tjuese_shuju映射的是mysql里的表t_juese_shuju。

#映射的方式是通过sqlalchemy.orm 的类 Mapper


tab_t_juese_wupin = Table("t_juese_shuju", metadata,
    Column("jue_se", INTEGER, primary_key = True),        # 角色id
    Column("b_beibao", BLOB), # 角色背包
    Column("b_cangku", BLOB), # 角色商城背包
    Column("b_shangcheng_beibao", BLOB), # 角色仓库
    Column("b_jineng", BLOB)        # 角色技能
    )


class Tjuese_shuju(TableObject):
    COL_NAMES = ['jue_se', 'b_beibao', 'b_cangku', 'b_shangcheng_beibao',
                 'b_jineng']
    TABLE_NAME = 't_juese_shuju'
    ROW_INDEX = ['jue_se']

    def __init__(self):
        TableObject.__init__(self)

    def get_name(self):
        return Tjuese_shuju.TABLE_NAME

    def get_col_names(self):
        return Tjuese_shuju.COL_NAMES

    def get_key_names(self):
        return Tjuese_shuju.ROW_INDEX

    def session_obj_copy(self,obj):#拷贝orm对象
        self.__dict__ = dict(obj.__dict__,**self.__dict__)#保留自身的状态成员_sa_instance_state
   

mapper_t_juese_wupin = Mapper(Tjuese_shuju, tab_t_juese_wupin)


 mysql的连接会话。会话的创建是使用sqlalchemy的接口。

@staticmethod
    def make_session_class(ip,user,pw,port,database):
        try:
            print "ip,port,database",ip,port,database
            if False == isinstance(port,int):
                print "port must be int type"
                return None
            _connect_str = "mysql://%s:%s@%s:%d/%s?charset=utf8" % (user,pw,ip,port,database)
            _engine = create_engine(_connect_str, echo=False)
            print _engine.connect()
            Session = sessionmaker(bind=_engine, autoflush=False, autocommit=True)
            print "Session",Session
            return Session
        except:
            traceback.print_exc()
            return None

(2)mysql角色数据管理工具

获取mysql角色数据事件响应函数:

def OnVerifyMysqlOneJuesePackage(self,evt):
        juese_id_str = self.ctl_mysql_juese_id.GetValue()
        juese_id_str = juese_id_str.replace(" ", "")
        juese_name_str = ""
        if "" == juese_id_str:
            juese_name_str = self.ctl_mysql_juese_name.GetValue()
            juese_name_str = juese_name_str.encode("utf8")
            juese_name_str = juese_name_str.replace(" ","")
        
        if "" == juese_id_str and "" == juese_name_str:
            title = u"请输入关键字(角色id或角色名)"
            self.show_warnning(title)
            return 
        juese_id = -1
        if "" != juese_id_str:
             try:
                 juese_id = int(juese_id_str)
                 if 0 >= juese_id:
                     title = u"角色id需要是正数"
                     self.show_warnning(title)
                     return 
             except:
                 title = u"角色id需要是数字"
                 self.show_warnning(title)
                 return 
             
        try:
            ret = Consistency.check_one_juese_beibao(juese_id,juese_name_str)
            if -1 == ret:
                title = u"该角色数据为空"
                self.show_warnning(title)
            elif -2 == ret:
                title = u"校验出错"
                self.show_warnning(title)
            elif -3 == ret:
                title = u"数据库为连接或连接出错"
                self.show_warnning(title)
            else:
                title = u"校验成功,请查看juese_beibao_check文件"
                self.show_warnning(title)
        except:
            traceback.print_exc()
            title = u"检查角色背包出错"
            self.show_warnning(title)


通过会话把检查的角色数据写到文件里

检查所有角色数据,获取所有角色的背包数据,并以json的格式写入到文件中。

@staticmethod
    def check_juese_beibao():
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 毕业设计-基于知识图谱的科技政策管理系统python源码.zip 基础系统模块 系统功能模块组成如下所示: ``` ├─系统管理 │ ├─用户管理 │ ├─角色管理 │ ├─菜单管理 │ └─部门管理 ├─系统监控 │ ├─在线用户 │ ├─系统日志 │ ├─登录日志 │ ├─Redis监控 │ ├─Redis终端 │ ├─请求追踪 │ ├─系统信息 │ │ ├─JVM信息 │ │ ├─TOMCAT信息 │ │ └─服务器信息 ├─任务调度 │ ├─定时任务 │ └─调度日志 ├─代码生成 │ ├─生成配置 │ ├─代码生成 └─其他模块 ├─FEBS组件 │ ├─表单组件 │ ├─表单组合 │ ├─FEBS工具 │ ├─系统图标 │ └─其他组件 ├─APEX图表 ├─高德地图 └─导入导出 ``` 系统特点 **项目描述**:系统提供了完善的科技政策管理体系。通过参考现有的文本自动分类算法,使其能够完成科技政策的自动分类。提取科技政策的各种信息,完成多种条件相结合的检索方法。使用新词发现算法建立了科技政策的词典,同时配合文本分析算法,在一定程度上完成了科技政策之间的对比。采集大量科技政策建立有关科技政策的知识库,构成知识图谱,让政策与政策之间形成一定的关联。参考国务院发布的主题词表,确认了科技政策表达的主体内容。 **技术概述**:系统采用SpringBoot框架搭建,使用Shiro进行用户权限管理,实现单点登录,提高系统安全性。Redis统一缓存处理,提高系统性能和用户满意度,Hanlp文本处理并构建科技政策知识图谱网络图。 系统架构分为四个层次,分别为用户访问层、业务应用层、服务支撑层和数据存储层。用户层按用户的权限将用户分为三类,三类用户能够使用本系统的不同的功能。业务应用层主要包括科技政策查询,其中有政策文件查询、科技政策分类总览、科技政策知识图谱展示。科技政策分析中包括科技政策对比、演化和主题词分析以及智能问答,政策文件管理主要是政策类别管理。服务支撑层是该系统用到的主要方法,用来对数据进行加工。服务支撑层包括:文本自动分类、提取科技政策文本关键词、新词发现技术、知识图谱。数据存储层为系统提供数据,主要是保存科技政策文件的Mysql数据库和保存知识图谱的Neo4j数据库。 1、科技政策文件管理 # (1)科技政策查询 功能:用户根据自己的需要对科技政策进行检索和查看 输入数据:选择发布时间范围(可选),政策名称(可选),关键词(可选),发布单位(可选),全文检索(可选)。 输出结果:根据用户选择的查询条件,输入的政策名称,选择的时间范围,政策的发布机构,科技政策包含的关键词或包含的内容,在表格中以分页的形式进行展示,展示顺序按照发布时间倒序排序,在表格中显示的内容包括政策名称,政策发布日期和政策发布机构。 使用场景:用户知道某篇科技政策的具体或大概的名称,按照政策名称进行具体或模糊查询。想要寻找具体部门发布的科技政策,可以选择发布单位,按照单位条件进行内容检索。寻找包含某个关键词的科技政策可以按照关键词条件查找。 解决方案:通过用户点击查询按钮来获取用户的输入,将获取的输入传入到后台的控制类中,将获取的数据进行整理后传递给MyBatis-plus中相应的mapper,动态的创建SQL语句,之后使用MyBatis-plus的分页查询查件,到数据库中进行查询,将查询的数据转换成json格式,传递给Layui的table元素,解析json数据后以表格进行展示。 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值