专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

python实现从零搭建图书管理系统

  学习目标tornado入门学习异步服务器学习异步数据库操作一、虚拟环境1。1虚拟环境的创建mkvirtualenvtornadopy3ppython31。2安装tornadopipinstalltornado1。3虚拟环境其他的操作虚拟环境mkvirtualenv创建虚拟环境rmvirtualenv删除虚拟环境workon进入虚拟环境、查看所有虚拟环境deactivate退出虚拟环境pippipinstall安装依赖包pipuninstall卸载依赖包piplist查看已安装的依赖库二、搭建项目
  三、完成请求的方式类似django中视图classMainHandler(tornado。web。RequestHandler):得到数据defget(self):这里就是返回的内容self。write(得到数据)添加新的数据defpost(self):self。write(添加新的数据)修改数据defput(self):self。write(修改数据)删除数据defdelete(self):self。write(删除数据)四、设置静态文件程序配置defmakeapp():returntornado。web。Application(〔(rbooks,MainHandler),〕,staticpath。static配置静态文件夹路径)五、配置模板5。1加载模板配置defmakeapp():returntornado。web。Application(〔(rbooks,MainHandler),〕,staticpath。static,配置静态文件夹路径templatepath。templates,配置模板路径)5。2定义模板!DOCTYPEhtmlhtmllangenheadmetacharsetUTF8titleTitletitleheadbodyh1{{show}}h1bodyhtml5。3渲染模板
  模板内容使用render返回内容类似django中视图classMainHandler(tornado。web。RequestHandler):得到数据defget(self):这里就是返回的内容self。render(index。html,show显示内容)六、加载前端给的数据6。1加载前端给个模板文件6。2加载前端给的前端静态资源七、数据库操作7。1数据库初始化创建数据库createdatabasebookmanagercharsetutf8;使用数据库usebookmanager;创建表CREATETABLEbooks(idintUNSIGNEDPRIMARYKEYAUTOINCREMENT,btitleVARCHAR(30)notNULL,bauthorVARCHAR(30)NOTNULL,bpersonVARCHAR(30),bpubdateDATENOTNULL,breadINTUNSIGNED,bcommentINTUNSIGNED);插入数据insertintobooks(btitle,bauthor,bperson,bpubdate,bread,bcomment)VALUES(红楼梦,曹雪芹,宝,198051,12,34),(游记,施耐安,悟空,1986724,36,50),(浒传,吴承恩,林冲,19951224,20,80),(三国演义,罗贯中,曹操,198051,58,24);7。2安装pymysql
  pipinstallpymysql八、使用同步的方式操作数据8。1get请求
  8。1。1get请求处理classMainHandler(tornado。web。RequestHandler):得到数据异步方法defget(self):1。从数据库得到数据1。1连接数据库创建Connection连接connconnect(hostlocalhost,port3306,databasebookmanager,userroot,passwordmysql,charsetutf8)获得Cursor对象cs1conn。cursor()1。2执行查询的sql语句cs1。execute(selectfrombooks;)得到数据库的数据datacs1。fetchall()1。3关闭cs1。close()conn。close()操作fortempindata:print(temp)返回数据self。render(index。html,showlistdata)
  8。1。2模板数据展示!这里动态添加数据{fortempinshowlist}trtdinputclassidInputtypetextvalue{{temp〔0〕}}tdtdinputtypetextvalue{{temp〔1〕}}tdtdinputtypetextvalue{{temp〔2〕}}tdtdinputtypetextvalue{{temp〔3〕}}tdtdinputtypetextvalue{{temp〔4〕}}tdtdinputtypetextvalue{{temp〔5〕}}tdtdinputtypetextvalue{{temp〔6〕}}tdtdclassdelinputtypebuttonvalue删除tdtdclassupdateinputtypebuttonvalue修改tdtr{end}8。2post请求defpost(self):得到请求的数据使用元组paramslistlist()paramslist。append(self。getargument(btitle))paramslist。append(self。getargument(bauthor))paramslist。append(self。getargument(bperson))paramslist。append(self。getargument(bpubdate))paramslist。append(self。getargument(bread))paramslist。append(self。getargument(bcomment))print(paramslist)1。从数据库得到数据1。1连接数据库创建Connection连接connconnect(hostlocalhost,port3306,databasebookmanager,userroot,passwordmysql,charsetutf8)获得Cursor对象cs1conn。cursor()1。2执行查询的sql语句cs1。execute(insertintobooks(btitle,bauthor,bperson,bpubdate,bread,bcomment)values(s,s,s,s,s,s),paramslist)得到数据库的数据conn。commit()1。3关闭cs1。close()conn。close()self。write({data:success})8。3put请求defput(self):得到数据bodydataself。request。body。decode(utf8)解析成字典paramsdictjson。loads(bodydata)1。从数据库得到数据1。1连接数据库创建Connection连接connconnect(hostlocalhost,port3306,databasebookmanager,userroot,passwordmysql,charsetutf8)获得Cursor对象cs1conn。cursor()btitle,bauthor,bperson,bpubdate,bread,bcomment1。2执行查询的sql语句cs1。execute(updatebookssetbtitle(btitle)s,bauthor(bauthor)s,bperson(bperson)s,bpubdate(bpubdate)s,bread(bread)s,bcomment(bcomment)swhereid(id)s,paramsdict)得到数据库的数据conn。commit()1。3关闭cs1。close()conn。close()self。write({data:success})8。4delete请求defdelete(self):得到数据bodydataself。request。body。decode(utf8)解析成字典paramsdictjson。loads(bodydata)1。从数据库得到数据1。1连接数据库创建Connection连接connconnect(hostlocalhost,port3306,databasebookmanager,userroot,passwordmysql,charsetutf8)获得Cursor对象cs1conn。cursor()1。2执行查询的sql语句cs1。execute(deletefrombookswhereid(id)s,paramsdict)conn。commit()1。3关闭cs1。close()conn。close()self。write({data:success})九、异步请求改造classMainHandler(tornado。web。RequestHandler):得到数据异步方法asyncdefget(self):print(get请求)等待3秒awaitasyncio。sleep(3)这里就是返回的内容self。render(index。html,show显示内容)十、异步10。1安装模块pip3installaiomysql把所有请求改成异步请求
  只需要方法前加async再耗时返回时使用await返回classMainHandler(tornado。web。RequestHandler):得到数据异步方法asyncdefget(self):1。从数据库得到数据1。1连接数据库创建Connection连接connawaitaiomysql。connect(hostlocalhost,port3306,dbbookmanager,userroot,passwordmysql,charsetutf8)获得Cursor对象cs1awaitconn。cursor()1。2执行查询的sql语句awaitcs1。execute(selectfrombooks;)得到数据库的数据dataawaitcs1。fetchall()1。3关闭awaitcs1。close()conn。close()操作fortempindata:print(temp)self。render(index。html,showlistdata)asyncdefpost(self):得到请求的数据使用元组paramslistlist()paramslist。append(self。getargument(btitle))paramslist。append(self。getargument(bauthor))paramslist。append(self。getargument(bperson))paramslist。append(self。getargument(bpubdate))paramslist。append(self。getargument(bread))paramslist。append(self。getargument(bcomment))print(paramslist)1。从数据库得到数据1。1连接数据库创建Connection连接connawaitaiomysql。connect(hostlocalhost,port3306,dbbookmanager,userroot,passwordmysql,charsetutf8)获得Cursor对象cs1awaitconn。cursor()1。2执行查询的sql语句awaitcs1。execute(insertintobooks(btitle,bauthor,bperson,bpubdate,bread,bcomment)values(s,s,s,s,s,s),paramslist)得到数据库的数据awaitconn。commit()1。3关闭awaitcs1。close()conn。close()self。write({data:success})asyncdefput(self):得到数据bodydataself。request。body。decode(utf8)解析成字典paramsdictjson。loads(bodydata)1。从数据库得到数据1。1连接数据库创建Connection连接connawaitaiomysql。connect(hostlocalhost,port3306,dbbookmanager,userroot,passwordmysql,charsetutf8)获得Cursor对象cs1awaitconn。cursor()btitle,bauthor,bperson,bpubdate,bread,bcomment1。2执行查询的sql语句awaitcs1。execute(updatebookssetbtitle(btitle)s,bauthor(bauthor)s,bperson(bperson)s,bpubdate(bpubdate)s,bread(bread)s,bcomment(bcomment)swhereid(id)s,paramsdict)得到数据库的数据awaitconn。commit()1。3关闭awaitcs1。close()conn。close()self。write({data:success})asyncdefdelete(self):得到数据bodydataself。request。body。decode(utf8)解析成字典paramsdictjson。loads(bodydata)1。从数据库得到数据1。1连接数据库创建Connection连接connawaitaiomysql。connect(hostlocalhost,port3306,dbbookmanager,userroot,passwordmysql,charsetutf8)获得Cursor对象cs1awaitconn。cursor()1。2执行查询的sql语句awaitcs1。execute(deletefrombookswhereid(id)s,paramsdict)awaitconn。commit()1。3关闭awaitcs1。close()conn。close()self。write({data:success})

非遗国潮闹新春相聚5A三百山,一起寻非遗赏国潮逛大集,过客家年!还记得小时候年的味道吗?今年春节,来三百山,带你重温年的味道!01三百山景区非遗国潮闹新春相聚5A三百山一起寻非遗赏国潮逛大集过客家年!2023hr春节期间,三百山景区不仅可以欣赏张氏帅府之张学良旧居沈涛走中国摄影选集民国人物故里篇(3)辽宁沈阳历史文化名城沈阳,人文景观繁多,旅游资源丰富多彩。张氏帅府是东北地区保存最为完好的名人故居,是张作霖及其长子张学良的官邸。1988年定年关将至,东北农村办酒席,几道东北菜让外地小伙直呼不想回去了每年一到冬天,要问哪里最火,那一定少不了东北。东北是一个很神奇的地方,平时你可能没有那么在乎这个地方,但是到了冬天,大家都会一股脑的去东北旅游。冬天的东北,空气里都是冷冽的味道,夹飞鸟翔集,野趣盎然,崇明这里太美了!2022年,崇明落实新增森林面积1。43万亩,推进2个开放休闲林地建设。新增绿色建筑13。08万平方米,完成既有建筑节能改造2。36万平方米。在崇明东滩,冬日的阳光没有夏日的炎炎,苹果申请了两项AppleCar车门设计专利IT之家1月15日消息,苹果在1年前申请了一项关于AppleCar车门的技术专利,而现在该公司再次向美国商标和专利局(USPTO)申请了两项车门技术专利。其中第一项则是具备自适应定爱奇艺回应禁止HDMI连线播放为防止录屏盗版而采取的限制措施Tech星球1月16日消息,今日,爱奇艺被曝禁止HDMI连线播放功能的消息引发热议。有网友反馈称,爱奇艺限制了HDMI线连接电视播放功能,自己在使用iPad用HDMI线连接电视时,第30章您已进入珠穆朗玛峰国家级自然保护区!头条创作挑战赛晒出最美的她头条旅游在家云旅游在头条看见彼此我要上头条我要上微头条感谢头条我要上热门自驾云游季西藏川藏线自驾走吧自驾去旅行自驾好去处冬日美食季超凡体验,遇见美好遇见美广西桂林兴安县华江乡高寨村猫儿山下游记广西桂林兴安县华江乡高寨村猫儿山下游记李灶生(自己改名)2023年1月16日写于2020年6月3日我们在灵渠出来已是下午3点22分,坐上来时租的电动三轮车(来时下车后叫她在这里等我啃烧饼嗦鱼头抽侨家乐大奖!文成年味盛宴,1月16日公园路等你!艾瑞巴蒂承载美好向往的2023如期而至在这喜气洋洋的日子里让我们来一次酣畅恣意的年味之旅吧!1月16日下午1点来市区公园路儒英坊一起沉浸式体验文成侨乡年味盛宴活动时间1月16日13长白山度假HotelXcreatArte长白山度假HotelXcreatArte长白山天沐温泉真的不是北海道吗全身浸泡在温泉里的那一刻,生活琐事带来的疲倦和糟心就瞬间全部消散了。日光轻云雪影,远山风晴傲桦,当灵动的飞瀑凝又是一年闻香时,世纪公园蜡梅初绽如果说这个枯萧的冬季,还有什么花香可以期待,当然非香气袭人的蜡梅莫属。天气一点点变冷,世纪公园的蜡梅已含苞待放,树上缀着大大的花苞,为绽放做好了准备。今年因温度原因,蜡梅花叶果同挂
春捂3处,不生杂病还睡得香!照着做,安度最易生病的30天早春时节,乍暖还寒,昼夜温差大,一不留神,就容易生病。特别是,对于一些有老病根的人,尤其容易老伤复发。这是怎么回事?该怎么应对?且听养生君细细道来为啥一到春天,特容易老伤复发?不少上了年纪之后,中老年人千万不要乱喝酒,牢记这2不喝原则不管哪个年龄阶段的人,对于喝酒都是比较热衷的,特别是喝了半辈子的老酒友们,都是比较喜欢喝酒的,但是看着这些上了年纪的老人,喝酒只喝几杯,但实际上他们的喝酒年龄病的年纪可能还要大。对为什么人类作为杂食性非常高的动物,却有个非常脆弱的胃?1人体需要大量的营养物质,以满足人体正常的生理需求,在身体内就会形成储备营养的系统。2当食物经过胃和小肠时,它们需要更多的能量来分解和消化食物越大越快则消耗得越快,于是储存养分和热男性肾虚腰痛腰酸怎么办?应该怎样补肾?肾虚是一种常见的男性疾病,它会导致男性出现许多不良症状,如虚弱头晕乏力失眠腰酸背痛等。男性补肾可以帮助男性改善肾虚的症状,提高其身体的抵抗力,从而改善其健康状况。男性补肾的方法有很喝水不解腻,试试这十种生津止渴的食物!我们都知道,人体正常的运转都是离不开津液的参与的,包括唾液胃液肠液等,这些都是与我们的器官正常运行有密切关系。但是,有时候我们的身体出现了某些问题,导致津液分泌不足,这个时候就需要猛龙队2换1报价方案!戴维斯或远赴多伦多联手珀尔特尔打造禁飞区最近几天NBA联盟可以说是高潮迭起,先是欧文被交易至独行侠,与东契奇组建超级外线组合。然后是湖人爵士森林狼达成三方交易,威少前往盐湖城,湖人迎回昔日旧将拉赛尔和两名板凳匪徒,森林狼因酒后斗嘴引发的惨案回顾前青岛队长马永康案马永康,1977年出生,山东青岛人曾入选健力宝队,归国后效力于青岛队,霍顿时期国奥队主力中后卫,从2000年开始一直担任青岛队队长,是队中绝对的灵魂人物,踢球作风硬朗,脾气火爆,铲小罗论高速突破过人,足坛我只认可2人,属于几十年一遇的天才罗纳尔迪尼奥认为论高速突破过人这项,我只佩服两个人,一个是罗纳尔多,另外一个是梅西,他们都是几十年难遇的天才,罗纳尔多没什么短板,属于史上最全面的前锋了,梅西呢,身体条件不够好,技反复咳嗽少吃五种食物反复咳嗽总是不好的,建议在咳嗽期间,尽量少吃这5种容易生痰的食物,这样有助于治愈咳嗽,我们一起了解一下吧!1。少吃甜食过甜的食物(比如蛋糕巧克力糖果糖块奶油等)容易伤脾生痰湿。有些我国科学家首次在实验中实现模式匹配量子密钥分发量子密钥分发基于量子力学基本原理,可以实现理论上无条件安全的保密通信,因此一直是学术界的研究热点。记者近日从中国科学技术大学获悉,该校潘建伟陈腾云等与清华大学马雄峰合作,首次在实验科学家在仙女星系中发现银河移民在最近的流浪地球电影中,由于太阳的急剧膨胀让人类失去了家园,于是开启了流浪地球的模式,逃离太阳系。其实,这种流浪星球在各个星系中都大量存在,也包括银河系。近日,一个由来自哈佛大学等
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网