创新实训——011

下面介绍在写后端程序时遇到的问题。
后端我使用的是flask,有关flask的基本使用(请求和websocket)在第三篇文章中已经介绍过了,下面介绍一些问题及解决办法。

pymysql.err.InternalError: Packet sequence number wrong - got 1 expected 2

这里要注意,在将后端部署时有可能会报pymysql.err.InternalError: Packet sequence number wrong - got 1 expected 2错误,导致部署后无法正常应用,果然开发环境和线上环境完全不一样。。。但是单独访问其中某一个请求是可以的,整个页面就不行,这是因为相当于多线程去访问数据库了,参照别人的博客我成功的有这一种方法:

在每个接口里单独定义数据库连接和游标,如:
@app.route('/testGet',methods=['get'])
def get_data():
    # 开始mysql数据库连接
    db = pymysql.connect(
        host='***',
        user='***',
        password='***',
        database='***'
    )
    # 使用cursor()方法创建一个游标对象
    cursor = db.cursor()
    db.commit()
    searchSql='select * from countrydata'
    cursor.execute(searchSql)
    cursor.close()
    db.close()
    return json.dumps(dataList)

这样就没啥问题了,redis可以全局连接。

pymysql

pymysql挺好用的,我这里以常见的增删改查来说明

插入单个值的时候可以像下面这种形式:

    cursor=db.cursor()
    db.commit()# 注意在执行操作时,最好先commit一下
    insertSql="insert into log (ip,user,time,method,url,protocol,code,size,link,result,resultDes,trueIP,message,rfc931) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
    insertValue=(extractData['remote_addr'],extractData['user'],extractData['datetime'],extractData['request']['method'],extractData['request']['url'],extractData['request']['protocol'],extractData['status'],extractData['size'],
                 extractData['link'],eval(res.text)[0]['res'],'-','-',extractData['user_agent'],'-')
    try:
        cursor.execute(insertSql,insertValue)
        db.commit()
    except:
        db.rollback()
        print("出错!")
    cursor.close()

插入多条数据的时候使用cursor.executemany(sql,data)data为list形式,里面的单条数据是tuple形式。

deleteSql='delete from log where id="%s"'%(logID)执行时与插入相同,这里需要注意的是删除一条数据时,主键已经不连续了,此时最好进行重新排序,做法如下:

alterSql1='alter table log drop id'#先删除主键列
alterSql2='alter table log add id int(11) primary key not null auto_increment first'#后重新按序添加

alter见上,update如updateSql='update log set result = "%s" , resultDes="%s" where id="%s"'%(logResult,description,logID)注意这里多字段间用,,不要和select弄混了用了and

select如searchSql='select count(*) from log where result="%s" and ip="%s"'%(yichang,ip)
在这里介绍一个我学会的一个比较高级的sql语句:
searchSql='select time,count(case when (result="%s") then result end) as zhCount,count(case when (result="%s") then result end) as yiCount from log where ip="%s" group by time'%(zhengchang,yichang,ip)
这个语句用到了case,这样就可以同时统计正常访问量和异常访问量了,非常方便。
select执行完成后,想要取到执行的结果,可以用cursor.fetchall()(取全部结果,返回多元组)或者cursor.fetchone()(取单条数据,返回单元组),如果想要返回字典形式(包括字段名的话)可以这样定义游标cursor:
cursor = db.cursor(pymysql.cursors.DictCursor)

运行后无法访问localhost

之前在编写flask运行时,没有任何问题,但是有一天突然localhost无法访问(一直在加载),也就是说后端突然失联了,而且后端在运行后的图片为:
执行截图
感觉第一行的内容和之前不一样了,我在这之前也没干啥特别的操作,运行了另一个flask程序和一个watchdog程序,可能和这俩程序有关,虽然上面说Debugger is active!但是Debug感觉并没有启动,因为之前我在运行时修改程序,它会检测到我的改动然后重新加载,但是现在没有反应,我在网上也没有查到相关资料,并且我将后端移到虚拟机里是可以正常访问的,这就很神奇!差点儿要重装环境,但是我在将dehug去掉时,程序竟然可以正常执行了,这就和debug相关了,查看了一些博客,发现自己的pycharm的设置并不相同,缺少了关于flask设置,我意识到可能是因为我在该程序目录下写了其他程序,导致pycharm不再将本程序标为flask程序,目前猜测在这。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计是高等教育阶段学生在完成学业前所进行的一项重要学术任务,旨在检验学生通过学习所获得的知识、技能以及对特定领域的深刻理解能力。这项任务通常要求学生运用所学专业知识,通过独立研究和创新,完成一个实际问题的解决方案或者开展一项有价值的项目。 首先,毕业设计的选择通常由学生根据个人兴趣、专业方向以及实际需求来确定。学生需要在导师的指导下明确研究目标、问题陈述,确立研究的范围和深度。毕业设计可以包括文献综述、需求分析、方案设计、实施与测试等多个阶段,以确保整个过程的科学性和系统性。 其次,毕业设计的完成通常需要学生具备一定的独立思考和解决问题的能力。在研究过程中,学生可能需要采用各种研究方法,如实验、调查、案例分析等,以获取必要的数据和信息。通过这些活动,学生能够培养扎实的专业技能,提升解决实际问题的实际能力。 第三,毕业设计的撰写是整个过程的重要组成部分。学生需要将研究过程、方法、结果以及结论等详细记录在毕业论文中,以展示其研究的全貌和成果。同时,撰写毕业设计还有助于提高学生的学术写作水平,培养清晰、逻辑的表达能力。 最后,毕业设计的评价通常由导师和相关专业人士进行。评价标准包括研究的创新性、实用性、方法的科学性以及论文的质量等方面。学生在毕业设计中获得的成绩也将直接影响其最终的学业成绩和学位授予。 总的来说,毕业设计是高等教育中的一项重要环节,通过此过程,学生不仅能够巩固所学知识,还能培养独立思考和解决问题的能力,为将来的职业发展奠定坚实的基础。
电子竞赛是一项激动人心的活动,它融合了电子工程、创新设计和技术挑战,为参赛者们提供了锻炼自己技能和创意的绝佳机会。为了帮助你们更好地准备和参与电子竞赛,我们自豪地推出了《电赛资源合集》,这是一个包罗万象的宝库,为你们提供了丰富的资源和知识。 这个合集包含了多种类型的资源,每一种都是精心制作的,旨在为电子竞赛的各个方面提供支持: 1. 设计资源:我们为你们精选了一系列创新的设计资源,包括电路图、PCB布局、原理图和元件库。这些资源将帮助你们在项目中快速制定设计方案,节省宝贵的时间。 2. 报告资源:一份出色的报告是电子竞赛中不可或缺的一部分。我们提供了示例报告、格式模板和写作指南,帮助你们撰写出清晰、有力的报告,以展示你们的项目和思考过程。 3. 讲解资源:了解项目背后的原理和工作原理至关重要。我们提供了详细的讲解资源,涵盖了各种电子竞赛常见的主题,从基础到高级,以确保你们具备必要的知识和理解。 无论你是电子竞赛的新手还是经验丰富的选手,这个合集都将满足你的需求。它旨在为你提供全面的支持,助力你在竞争激烈的电子竞赛中脱颖而出。 让我们一同点亮电子竞赛之路,探索创新的世界!赶快下载我们的《电赛资源合集》,开启你的电子竞赛之旅吧! 如果你对这个合集有任何问题或建议,欢迎随时联系我们。我们期待着看到你在电子竞赛中取得辉煌的成就!
Aspen HYSYS是一种流程模拟软件,被广泛应用于化工和能源行业中的工程设计、优化和操作。通过Aspen HYSYS,用户可以模拟和分析各种化工流程,包括石油精炼、天然气加工、化工制造和能源生产等。 进行过程模拟实训时,我们可以利用Aspen HYSYS教程进行学习和实践。首先,我们需要下载Aspen HYSYS软件并完成安装。随后,我们可以寻找相应的Aspen HYSYS教程,这些教程通常以视频、文档或在线网页的形式提供。 教程通常会包含一系列实际案例和实验,我们可以按照这些案例进行模拟实践。通过跟随教程,我们可以学习到Aspen HYSYS的各种功能和操作技巧,掌握模拟化工流程的基本步骤和方法。 在教程中,我们可以学习到如何创建和编辑流程模型、添加和连接设备、定义物料性质和设定各种操作条件等。同时,我们还可以学习到如何进行流程优化、能耗分析和设备调整等高级操作。 通过实践和模拟,我们可以更加深入地了解化工流程中的一些关键参数和现象,并能够对流程进行优化和改进。此外,我们还可以通过模拟实践掌握操作软件的技巧,提高工作效率。 总的来说,通过Aspen HYSYS教程的模拟实训,我们可以在不实际进行现场操作的情况下,学习和掌握化工流程的模拟和分析技巧。这样的实训有助于提高工程技术人员的能力和竞争力,以及加强他们在化工和能源行业中的实际应用能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值