mysql部署rainbow_Django基础篇(二)与mysql配合使用 shinerainbow

需求:模拟实现学员管理系统。

表结构如下: 班级/学生/老师

班级表:  id     title

1       xx

2  xx

学生表:  id    name   班级ID(foreign  key)

1   xxx           1

2   xxx            2

老师表:  id    name

1      xxxx

2  xxx

老师班级关系表(多对多):

id   tid(教师id)    cid (班级id)

1       1                  1

1       2                 2

......

1.单表操作

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 importpymysql2 #连接mysql

3 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',4 charset='utf8')5 #此处的cursor 一定要写成字典类型. 否则查询结构 返回元祖类型

6 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)7 cursor.execute('select id,title from class')8 #返回多个值

9 class_list =cursor.fetchall()10 cursor.close()11 conn.close()12 return render(request, 'classes.html', {'class_list': class_list})

连接mysql

踩坑1:携带查询结果无法在页面上通过循环渲染?

# 通过情况下连接惯性写的是

错误写法:cursor = conn.cursor () # 此处这样写cursor查询结束会将结果封装成元祖类型... 之后通过for循环取值就稳凉...

正确写法:cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 此处这样写cursor查询结果会封装成字典类型. 取值so esay...

--------------------------------------------------------------------------------------------

踩坑2:return render(request, 'classes.html', {'class_list': class_list}) 为撒第一个参数request飘红?

麻溜溜去检查函数的形式参数中第一个参数是否写了request...

整体单表操作的思路如下:通过form表单进行数据获取和传递到后台。注意事项有:

增、删、改操作结束后重定向到展示班级信息页;

携带id传递到后台,一波查询获取数据,返回到修改页.

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #显示班级列表

2 #参数列表上有一个request,切记,切记

3 defclasses(request):4 #连接mysql

5 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',6 charset='utf8')7 #此处的cursor 一定要写成字典类型. 否则查询结构 返回元祖类型

8 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)9 cursor.execute('select id,title from class')10 #返回多个值

11 class_list =cursor.fetchall()12 cursor.close()13 conn.close()14 return render(request, 'classes.html', {'class_list': class_list})

展示班级信息--->查

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 defadd_class(request):2 if request.method == 'GET':3 return render(request, 'add_class.html')4 else:5 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',6 charset='utf8')7 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)8 v = request.POST.get('title')9 cursor.execute('insert into class(title) values (%s)', [v, ])10 conn.commit()11 cursor.close()12 conn.close()13 return redirect('/classes/')

添加班级信息--->增

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 defedit_class(request):2 #点击编辑按钮,根据Id获取到class信息 传入到下一个页面中

3 if request.method == 'GET':4 id = request.GET.get('nid')5 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',6 charset='utf8')7 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)8 cursor.execute('select id,title from class where id = %s', [id, ])9 result =cursor.fetchone()10 cursor.close()11 conn.close()12 return render(request, 'edit_class.html', {'result': result})13 else:14 id = request.POST.get('id')15 title = request.POST.get('title')16 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',17 charset='utf8')18 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)19 v = request.POST.get('title')20 cursor.execute('update class set title =%s where id=%s', [title, id])21 conn.commit()22 cursor.close()23 conn.close()24 return redirect('/classes/')

编辑班级信息页--->查&改

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 defdel_class(request):2 id = request.GET.get('nid')3 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',4 charset='utf8')5 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)6 cursor.execute('delete from class where id = %s', [id, ])7 conn.commit()8 cursor.close()9 conn.close()10 return redirect('/classes/')

删除班级信息---->删

注:对于单表操作表单信息量不是很大的情况下,使用Ajax操作会更加丝滑...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值