关于flask库和表单数据交互时遇到的知识和错误整理(顺带一些vue问题)
2019-07-19 22:40
411 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44751318/article/details/96506793
2.如果报错信息显示,在xx.vue文件里,“Vue”定义了但是没有使用,那么大胆的注释掉就OK!
MySQL中的自动递增问题
数据库中主键设置自动递增以后,下一个的大小取决于你在数据库中操作过得数据量的大小,假如你的数据库中只有10个数据,但是未必下一个数据就可以如愿变成11,因为下一个数字的大小在于你的数据库“ 流通过的”数据,比如你往数据库里面添加过120个数据,但是你删了110,那么你再添加数据,就会变成第121个,这个可以在表设置主键那里自行查看或更改。
Results问题
results.form.get('name') results.form['name']
两者一般情况下是没有区别的,目的都是为了从模板中获取数据,获取数据的开源就是根据在模板中制定的‘name’来获取数据;
代码
from flask import Flask, render_template,request,redirect,url_for,json import pymysql from flask_cors import * app = Flask(__name__) CORS(app, supports_credentials = True) # 连接数据库的四个要素(端口号默认3306,已省略) hostName = "localhost" userName = "root" userPassword = "root" dbName = "study11" #路由默认只支持get,如果需要增加,需要自行指定 #书目检索表的建立和书表格 @app.route("/lib",methods=['GET','POST']) def index(): # 使用connect方法进行连接MySQL # 函数 db = pymysql.connect(hostName, userName, userPassword, dbName) # 我们需要一个游标 cursor = db.cursor() # 编写SQL sql = "select * from imd_book" # sql = """insert into imd_book (isdn,publish_date,author,publisher,name,bookid) # values ('188XXX188','2007/2/3','施耐庵','中国出版社','水浒传',21)""" #sql = "delete from imd_book where bookid=17" #馆藏副本总数 sql1 = "select count(*) from imd_copybook where book_id = %s" #馆藏可借总数 is_borrow=1可借 stautus=1未被借走 sql2 = "select count(*) from imd_copybook where is_borrow=1 and status=1 and book_id= %s" try: # 执行SQL,使用execute方法执行 cursor.execute(sql) # 获取数据 results = cursor.fetchall() #print(results) # 循环显示数据 datalist = [] for row in results: #每一次循环都把one列表变成空列表 one = [] #把第一本书的所有数据放在one这个列表中 one.append(row[0]) one.append(row[1]) one.append(row[2]) one.append(row[3]) one.append(row[4]) one.append(row[5]) #通过sql1和书的id去imd_copybook表中查询书的总数量 cursor.execute(sql1, [row[5]]) #把该id的书的所有馆藏副本数量赋给results1 results1 = cursor.fetchone() #print (results1) #再把这个数据加入到one这个列表中 one.append(results1[0]) #print (one) #执行sql2,获取可以借阅到的副本数量 cursor.execute(sql2,[row[5]]) #把该值赋给results2 results2 = cursor.fetchone() #再加入到one列表中 one.append(results2[0]) #把整个one列表加入到datalist空列表中 datalist.append(one) except: print("error") #检索图书 if request.method == 'POST': # 获取想要的参数 #print (request.form['f']) #print (name_key) sql3 = sql + " where " + request.form['f'] + " like '%{}%'" sql3 = sql3.format(request.form.get('key')) #print (sql3) sql4 = "select count(*) from imd_copybook where book_id = %s" sql5 = "select count(*) from imd_copybook where is_borrow=1 and status=1 and book_id= %s" datalist_two = [] try: #查询书本信息 cursor.execute(sql3) results3 = cursor.fetchall() #print (results3[0]) two = [] for row_one in results3[0]: two.append(row_one) #print(two) #查询馆藏数量 cursor.execute(sql4,two[5]) results4 = cursor.fetchone() #print(results4) #查询可借数量 cursor.execute(sql5, two[5]) results5 = cursor.fetchone() #print(results5) two.append(results4[0]) two.append(results5[0]) #数据导入列表 datalist_two.append(two) #print (datalist_two) except: print("error") return render_template('lib.html', datalist=datalist_two) # 关闭游标 cursor.close() # 关闭数据库 db.close() return render_template('lib.html',datalist = datalist) @app.route("/book/<id>") def book(id): #1、通过主键获取书的信息 sql1 = "select * from imd_book where book_id={}" sql1 = sql1.format(id) #2、查询馆藏书 sql2 ="select count(*) from imd_copybook where book_id={}" sql2 = sql2.format(id) #3、查询可借复本数 sql3 = "select count(*) from imd_copybook where status = 1 and is_borrow = 1 and book_id = {}" sql3 = sql3.format(id) #4、借阅记录数 sql4 = "select count(*) from imd_record a left join imd_copybook b on a.copy_id=b.copybookid" \ " where b.book_id={}" sql4 = sql4.format(id) #5、借阅记录 sql5 = "select a.*,c.* from imd_record a " \ "left join imd_user c on a.user_id = c.user_id " \ "left join imd_copybook b on a.copy_id = b.copybookid " \ "where b.book_id = {}" sql5 = sql5.format(id) #6、书的平均评分 sql6 = "select avg(a.score) from imd_comment a left join imd_copybook b on a.copy_id=b.copybookid" \ " where b.book_id={}" sql6 = sql6.format(id) #7、书的评分及评论记录 sql7 = "select a.*,c.* from imd_comment a " \ "left join imd_user c on a.user_id = c.user_id " \ "left join imd_copybook b on a.copy_id = b.copybookid " \ " where b.book_id = {}" sql7 = sql7.format(id) #8、书的评论总记录数 sql8 = "select count(*) from imd_comment a left join imd_copybook b on a.copy_id=b.copybookid" \ " where b.book_id={}" sql8 = sql8.format(id) #9、查询副本状态 sql9 = "select * from imd_copybook where book_id={}" sql9 = sql9.format(id) db = pymysql.connect(hostName, userName, userPassword, dbName) cursor = db.cursor() datalist = [] try: one = [] #print (sql1) cursor.execute(sql1) results1 = cursor.fetchall() #print (results1) for row in results1: one.append(row[0]) one.append(row[1]) one.append(row[2]) one.append(row[3]) one.append(row[4]) one.append(row[5]) #print (one) #print(sql2) cursor.execute(sql2) results2 = cursor.fetchone() #print (results2) one.append(results2[0]) #print(one) #print(sql3) cursor.execute(sql3) results3 = cursor.fetchone() #print(results3) one.append(results3[0]) #print(one) #print(sql4) cursor.execute(sql4) results4 = cursor.fetchone() #print(results4) #print(sql5) cursor.execute(sql5) results5 = cursor.fetchall() #print(results5) #print(sql6) cursor.execute(sql6) results6 = cursor.fetchone() #print (results6) #print(sql7) cursor.execute(sql7) results7 = cursor.fetchall() #print(results7) #print(sql8) cursor.execute(sql8) results8 = cursor.fetchall() #print(results8) cursor.execute(sql9) results9 = cursor.fetchall() #print (results9) except: print ("error") datalist.append(one) #print (datalist) cursor.close() db.close() return render_template("2.html",re4 = results4,datalist = datalist,re5 = results5,re6 = results6,re7 = results7,re8 = results8,re9 = results9) @app.route("/2") def rrrrr(): return render_template("2.html") #添加图书,直接跳转到添加书的页面,点击提交按钮后,跳转到savebook @app.route("/addBook") def add_Book(): return render_template('add_book.html') #与数据库对接,有了添加图书的基本信息后添加到数据库中,并转到最初的index(书表)中 @app.route("/saveBook",methods=['GET','POST']) def saveBook(): #1.获取数据 # print (request.form['name']) # print (request.form['author']) # print (request.form['publisher']) # print (request.form['isbn']) # print (request.form['publishDate']) #2.拼写sql sql = "insert into imd_book (name,author,publisher,isbn,publish_date)" \ " values ('{}','{}','{}','{}','{}')" sql = sql.format(request.form['name'],request.form['author'],request.form['publisher'], request.form['isbn'],request.form['publishDate']) #print (sql) #3.连接数据库 db = pymysql.connect(hostName, userName, userPassword, dbName) #4.获取游标,执行sql cursor = db.cursor() try: cursor.execute (sql) except: print ("error") #5.关闭游标,关闭数据库 cursor.close() db.close() #7.重定向或跳转 return redirect(url_for("listBook")) #删除图书,这一步的目的是获取要删除的书的编号 @app.route ("/delBook") def delBook(): #获取数据,表示get方式来获取内容,直接获取id后下面可以直接使用 id = request.args.get('id') return id #获取到书的编号,与数据库对接,并执行删除书的操作,并返回到管理员的书的展示页面 @app.route ("/delBook/<id>") def delBook2(id): sql = "delete from imd_book where bookid = {}" sql = sql.format(id) db = pymysql.connect(hostName, userName, userPassword, dbName) cursor = db.cursor() try: cursor.execute(sql) except: print ("error") cursor.close() db.close() return redirect(url_for('listBook')) #更改图书 @app.route("/updateBook",methods=['GET','POST']) def updateBook(): #获取数据: bookid = request.form['bookid'] name = request.form['name'] publisher = request.form['publisher'] publishDate = request.form['publishDate'] isbn = request.form['isbn'] author = request.form['author'] sql = "update imd_book set bookid={},name='{}',publisher='{}',publish_date='{}',isbn='{}',author='{}' where book_id={}" sql = sql.format(bookid,name,publisher,publishDate,isbn,author,bookid) db = pymysql.connect(hostName, userName, userPassword, dbName) cursor = db.cursor() try: print (sql) cursor.execute(sql) except: print("error") cursor.close() db.close() return redirect(url_for('listBook')) #管理员界面,在该页面可以对书进行直接操作 @app.route("/listBook") def listBook(): #1.获取参数 #2.拼写sql sql = "select * from imd_book" #3.连接数据库 db = pymysql.connect(hostName, userName, userPassword, dbName) #4.获取游标,执行sql cursor = db.cursor() try: cursor.execute(sql) results = cursor.fetchall() except: print ("error") #5.关闭游标,关闭数据库 cursor.close() db.close() #6.重定向或跳转 return render_template("list.html",re = results) #展示单一的一本书,并对这本书执行相关操作 @app.route("/showBook/<id>") def showBook(id): sql = "select * from imd_book where book_id = {}" sql = sql.format(id) db = pymysql.connect(hostName, userName, userPassword, dbName) cursor = db.cursor() try: #print (sql) cursor.execute(sql) results = cursor.fetchall() #print (results) except: print ("error") cursor.close db.close() return render_template("show_book.html",re = results) #对图书的副本情况的展示 @app.route("/listCopyBook/<id>") def listCopyBook(id): sql = "select * from imd_copybook where book_id={}" sql = sql.format(id) sql2 = "select * from imd_book where book_id={}" sql2 = sql2.format(id) db = pymysql.connect(hostName, userName, userPassword, dbName) cursor = db.cursor() try: #print (sql) cursor.execute(sql) results = cursor.fetchall() #print (results) #print (sql2) cursor.execute(sql2) book = cursor.fetchone() #print (book) except: print ("error") cursor.close() db.close() return render_template("listCopyBook.html",book = book,rs = results) #对一个副本的展示 @app.route("/showCopyBook/<copybookid>") def showCopyBook(copybookid): sql = "select * from imd_copybook where copybookid = '{}'" sql = sql.format(copybookid) db = pymysql.connect(hostName, userName, userPassword, dbName) cursor = db.cursor() try: #print (sql) cursor.execute(sql) results = cursor.fetchall() #print (results) except: print ("error") cursor.close db.close() return render_template("showCopyBook.html",re = results) #对图书副本进行添加操作 @app.route("/addCopyBook") def addCopyBook(): return render_template("addCopyBook.html") #跳转页面后执行下面函数来进行操作并跳转到listCopyBook页面 @app.route("/saveCopyBook",methods=['GET','POST']) def saveCopyBook(): id = request.form['bookid'] sql = "insert into imd_copybook (place,status,is_borrow,copybookid,book_id) values('{}','{}','{}','{}','{}')" sql = sql.format(request.form['place'],request.form['status'],request.form['is_borrow'],request.form['copybookid'],request.form['bookid']) sql2 = "select * from imd_book where book_id = {}" sql2 = sql2.format(id) sql3 = "select * from imd_copybook where book_id={}" sql3 = sql3.format(id) db = pymysql.connect(hostName, userName, userPassword, dbName) cursor = db.cursor() try: cursor.execute(sql) #print (sql) cursor.execute(sql2) #print (sql2) book = cursor.fetchone() #print (book) cursor.execute (sql3) #print (sql3) results = cursor.fetchall() #print (results) except: print ("error") cursor.close() db.close() return render_template("listCopyBook.html",book = book,rs = results) #对图书副本执行修改操作 @app.route("/updateCopyBook",methods=['GET','POST']) def updateCopyBook(): copybookid = request.form['copybookid'] place = request.form['place'] status = request.form['status'] is_borrow = request.form['is_borrow'] id = request.form['bookid'] sql = "update imd_copybook set place='{}',copybookid='{}',status='{}',is_borrow='{}' where copybookid='{}'" sql = sql.format(place,copybookid,status,is_borrow,copybookid) print(sql) db = pymysql.connect(hostName, userName, userPassword, dbName) cursor = db.cursor() try: cursor.execute(sql) except: print ("error") cursor.close() db.close() return redirect(url_for("listCopyBook",id=id)) #对图书副本执行删除操作 @app.route("/delCopyBook/<copybookid>") def delCopyBook(copybookid): sql = "delete from imd_copybook where copybookid='{}'" sql = sql.format(copybookid) db = pymysql.connect( hostName, userName, userPassword, dbName) cursor = db.cursor() try: #print (sql) cursor.execute(sql) except: print("error") cursor.close() db.close() return redirect(url_for("listBook")) @app.route("/bookListJson") def bookListJson(): #获取参数 # 拼写sql sql = "select * from imd_book" # 连接数据库 db = pymysql.connect(hostName,userName,userPassword,dbName) # 获取游标,执行sql cursor = db.cursor() try: cursor.execute(sql) results = cursor.fetchall() except: print ("error") # 关闭游标,关闭数据库 cursor.close() db.close() # 跳转或重定向输出json return json.dumps(results,ensure_ascii=False) @app.route("/bookShowJson") def bookShowJson(): id = request.args.get('id') sql = "select * from imd_book where book_id = {}" sql = sql.format(id) db = pymysql.connect(hostName, userName, userPassword, dbName) cursor = db.cursor() try: print(sql) cursor.execute(sql) results = cursor.fetchone() except: print("error") cursor.close() db.close() return json.dumps(results, ensure_ascii=False) if __name__ == '__main__': app.run(host="0.0.0.0")
其中有一部分代码的目的是通过Json传递数据,实现前后端分离;
思路体现(有一个好得逻辑性很重要,最好整理下来,敲代码也方便)
下面这张图片就是我在做这个系统时所整理的思路(比较乱,但是我好歹还可以看懂)
浏览器返回400的错误
这样的错误一般都是出现在前后端数据不一致时,这时候需要检查的是sql语句和Python从数据库里面爬取到的数据有没有问题,大部分是在后端,因为后端比较乱,容易出错,可以让Python运行后输出sql语句,粘贴到数据库查询中来检查sql语句是否有误,因为Python并不会报数据库的错误;而如果数据没有问题,那么需要做的就是检查设置的变量是否有问题;
vue遇到的问题整理
1.在vue中,一次只可以运行一个标签,所以如果想要同时运行多个标签,不要忘记给整体加上一个
标签,这样做的目的就是让特曼同级。2.如果报错信息显示,在xx.vue文件里,“Vue”定义了但是没有使用,那么大胆的注释掉就OK!
相关文章推荐
- 关于EXP-00056: 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 EXP-00000: 导出终止失败 的问题解决方法整理
- 关于在用curl函数post网页数据时,遇上表单提交 type为submit 类型而且没有name和id时可能遇到的问题及其解决方法
- 关于面试遇到一些问题没答对的整理
- 关于javaweb中遇到的一些错误整理
- 关于SSH框架中的错误整理,遇到的问题都是前进的台阶
- 通过plsql 测试存储过程遇到的问题和学习到的一些基础知识整理
- 最近在ArcGIS Engine开发中关于调用gp工具过程出现COM 组件的调用返回了错误 HRESULT E_FAIL 错误的解决方法 和 学习oracle中遇到的一些问题总结
- 关于一些平常JAVA知识及遇到问题的积累(持续更新)
- 项目中遇到的一些前后台数据交互小问题
- [整理]关于修正CUE文件错误以正常播放APE问题
- [疑]关于oracle导出数据时遇到的4031问题
- 关于sam9x5移植遇到的一些问题
- 关于VS2005生成页面遇到的一些问题
- Struts2.1.8 验证框架(validation)的使用中遇到的一些问题(直接访问jsp遇到的错误)
- 关于调用某个api遇到的一些问题
- 0701学习笔记数据类型转换和循环嵌套,继续补充一些关于字符串的知识
- ms sql到mysql的移植:关于数据类型移植的一些问题
- 【IPHONE】关于IPHONE IOS4.0越狱遇到的一些问题汇总
- 关于int、float、double一些知识的整理
- 关于listitem点击事件根据position取得数据库数据Onresume()更新Adapter后取得数据错误的问题