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

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

      班级表:  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操作会更加丝滑...

 

 

  

 

Django基础篇(二)与mysql配合使用的更多相关文章

  1. Django 基础篇(二)视图与模板

    视图 在django中,视图对WEB请求进行回应 视图接收reqeust对象作为第一个参数,包含了请求的信息 视图就是一个Python函数,被定义在views.py中 #coding:utf- fro ...

  2. 01: Django基础篇

    目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...

  3. php基础篇-二维数组排序 array_multisort

    原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...

  4. Django基础(二)

    Django基础(二) http://www.cnblogs.com/wupeiqi/articles/4508271.html

  5. python的django基础篇

    一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...

  6. python3之Django基础篇

    一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...

  7. 2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离

    技巧提示:mysql读写分离搭建好之后,配合nginx的负载均衡,可以高效的mysql的集群性能,同时免去麻烦的query分流.比如,sever1收到的请求就专门链接slave1从mysql读取数据, ...

  8. django 基础篇

    jdango 简介: 一个可以使Web开发工作愉快并且高效的Web开发框架. 使用Django,使你能够以 小的代价构建和维护高质量的Web应用. Python的WEB框架有Django.Tornad ...

  9. JavaScript笔记基础篇(二)

    基础篇主要是总结一些工作中遇到的技术问题是如何解决的,应为本人属于刚入行阶段技术并非大神如果笔记中有哪些错误,或者自己的一些想法希望大家多多交流互相学习. 1.ToFixed()函数 今天在做Birt ...

  10. Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析

    转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编 ...

随机推荐

  1. 服务器上的 IPProxy代理设置

    1.window 平台 CCProxy 安装包 传送门: http://www.xue51.com/soft/2794.html 该页面详细的说明了ccproxy怎么安装.怎么破jie.... 下面老 ...

  2. Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 解决方法

    可以通过如下命令来解决,具体就是先关闭服务器,然后再重启服务器: cd /etc/init.d sudo service mysql stop sudo service mysql start

  3. PHP curl get post请求

    POST请求: public function postUrl($url, $postData = false, $header = false) { $ch = curl_init($url); c ...

  4. jmeter添加自定义扩展函数之if判断

    1,打开eclipse,新建maven工程,在pom中引用jmeter核心jar包,具体请看---https://www.cnblogs.com/guanyf/p/10863033.html---,这 ...

  5. mysqldump导出数据出现问题

    利用mysqldump导出数据时提示warning,A partial dump from a server that has GTIDsubt@ubt-All-Series:~$  mysqldum ...

  6. 怎样理解Functor与Monad

    1. 复合函数操作符 Prelude> :t (.) (.) :: (b -> c) -> (a -> b) -> a -> c Prelude> (.) ( ...

  7. 系统安装2---BIOS设置

    对于新的电脑通过U盘安装Windows系统,我们第一步绝对是修改BIOS设置.在这里面我们要修改几项比较重要的选项.如下介绍: 修改第一启动项:目的就是让电脑的第一启动项变为U盘启动. 调节引导方式: ...

  8. python基础----求水仙花数

    水仙花数,即一个三位数,各个位上的数字的三次方相加,等于该数本身.如:153 = 1**3 + 5 ** 3 + 3 ** 3 def is_narc_num(n): # if n <100 o ...

  9. Codeforces 497B Tennis Game( 枚举+ 二分)

    B. Tennis Game time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  10. 【目录】sql server 性能调优

    随笔分类 - sql server 性能调优 sql server 性能调优之 资源等待之网络I/O 摘要: 一.概述 与网络I/O相关的等待的主要是ASYNC_NETWORK_IO,是指当sql s ...