需求:模拟实现学员管理系统。<*_* 从基础做起>

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

      班级表:  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.单表操作

 import pymysql
# 连接mysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',
charset='utf8')
# 此处的cursor 一定要写成字典类型. 否则查询结构 返回元祖类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute('select id,title from class')
# 返回多个值
class_list = cursor.fetchall()
cursor.close()
conn.close()
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表单进行数据获取和传递到后台。注意事项有:

  1. 增、删、改操作结束后重定向到展示班级信息页;
  2. 携带id传递到后台,一波查询获取数据,返回到修改页.  
 # 显示班级列表
# 参数列表上有一个request,切记,切记
def classes(request):
# 连接mysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',
charset='utf8')
# 此处的cursor 一定要写成字典类型. 否则查询结构 返回元祖类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute('select id,title from class')
# 返回多个值
class_list = cursor.fetchall()
cursor.close()
conn.close()
return render(request, 'classes.html', {'class_list': class_list})

展示班级信息--->查

 def add_class(request):
if request.method == 'GET':
return render(request, 'add_class.html')
else:
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',
charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
v = request.POST.get('title')
cursor.execute('insert into class(title) values (%s)', [v, ])
conn.commit()
cursor.close()
conn.close()
return redirect('/classes/')

添加班级信息--->增

 def edit_class(request):
# 点击编辑按钮,根据Id获取到class信息 传入到下一个页面中
if request.method == 'GET':
id = request.GET.get('nid')
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',
charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute('select id,title from class where id = %s', [id, ])
result = cursor.fetchone()
cursor.close()
conn.close()
return render(request, 'edit_class.html', {'result': result})
else:
id = request.POST.get('id')
title = request.POST.get('title')
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',
charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
v = request.POST.get('title')
cursor.execute('update class set title =%s where id=%s', [title, id])
conn.commit()
cursor.close()
conn.close()
return redirect('/classes/')

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

 def del_class(request):
id = request.GET.get('nid')
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',
charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute('delete from class where id = %s', [id, ])
conn.commit()
cursor.close()
conn.close()
return redirect('/classes/')

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

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

 

 

  

 

最新文章

  1. c程序对于文件的处理
  2. 简介python2.x的编码
  3. 做一个会PS切图的前端开发
  4. Repeater分页代码
  5. Android 进程生命周期 Process Lifecycle
  6. ListView适配器获取布局文件作为View的三种方式
  7. CentOS 更改yum源与更新系统
  8. Mac下的eclipse 4.6的tomcat插件安装正确姿势
  9. QT断点续传(原理:需要在HTTP请求的header中添加Rang节,告诉服务器从文件的那个位置开始传输.格式为bytes 开始传输的位置)
  10. 打造你自己ajax上传图片
  11. Unity NGUI UIPanel下对粒子的剪裁
  12. 关于cin的用法一些小结
  13. ACL2016信息抽取与知识图谱相关论文掠影
  14. 微信小程序之实现页面缩放式侧滑效果
  15. .Net 读取配置文件 xml
  16. pyqt5-day1
  17. Redis事件订阅和持久化存储
  18. codeforce864d
  19. [Android Pro] 跨平台反编译工具 jadx (ubuntu亲测 可用)
  20. python的callback函数原理

热门文章

  1. sonarqube6.7.1使用
  2. Sublime Text 3 快捷键总结(Mac)
  3. jmeter 测试结果分析术语
  4. Tecplot 360 安装后弹出“Is your Tecplot 360 EX liense valid?”解决方法
  5. crontab 使用
  6. WebForm 用户控件 委托 实现 textbox后台赋值 调用端处理实现 textchange
  7. luoguP1080 国王游戏 题解(NOIP2012)(贪心+高精)
  8. HDU 1577 WisKey的眼神
  9. kubernetes集群的安装异常汇---docker的驱动引擎
  10. 发送xml数据