Django基础篇(二)与mysql配合使用
需求:模拟实现学员管理系统。<*_* 从基础做起>
表结构如下: 班级/学生/老师
班级表: 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表单进行数据获取和传递到后台。注意事项有:
- 增、删、改操作结束后重定向到展示班级信息页;
- 携带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配合使用的更多相关文章
- Django 基础篇(二)视图与模板
视图 在django中,视图对WEB请求进行回应 视图接收reqeust对象作为第一个参数,包含了请求的信息 视图就是一个Python函数,被定义在views.py中 #coding:utf- fro ...
- 01: Django基础篇
目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...
- php基础篇-二维数组排序 array_multisort
原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...
- Django基础(二)
Django基础(二) http://www.cnblogs.com/wupeiqi/articles/4508271.html
- python的django基础篇
一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...
- python3之Django基础篇
一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...
- 2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离
技巧提示:mysql读写分离搭建好之后,配合nginx的负载均衡,可以高效的mysql的集群性能,同时免去麻烦的query分流.比如,sever1收到的请求就专门链接slave1从mysql读取数据, ...
- django 基础篇
jdango 简介: 一个可以使Web开发工作愉快并且高效的Web开发框架. 使用Django,使你能够以 小的代价构建和维护高质量的Web应用. Python的WEB框架有Django.Tornad ...
- JavaScript笔记基础篇(二)
基础篇主要是总结一些工作中遇到的技术问题是如何解决的,应为本人属于刚入行阶段技术并非大神如果笔记中有哪些错误,或者自己的一些想法希望大家多多交流互相学习. 1.ToFixed()函数 今天在做Birt ...
- Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析
转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编 ...
随机推荐
- 服务器上的 IPProxy代理设置
1.window 平台 CCProxy 安装包 传送门: http://www.xue51.com/soft/2794.html 该页面详细的说明了ccproxy怎么安装.怎么破jie.... 下面老 ...
- 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
- PHP curl get post请求
POST请求: public function postUrl($url, $postData = false, $header = false) { $ch = curl_init($url); c ...
- jmeter添加自定义扩展函数之if判断
1,打开eclipse,新建maven工程,在pom中引用jmeter核心jar包,具体请看---https://www.cnblogs.com/guanyf/p/10863033.html---,这 ...
- mysqldump导出数据出现问题
利用mysqldump导出数据时提示warning,A partial dump from a server that has GTIDsubt@ubt-All-Series:~$ mysqldum ...
- 怎样理解Functor与Monad
1. 复合函数操作符 Prelude> :t (.) (.) :: (b -> c) -> (a -> b) -> a -> c Prelude> (.) ( ...
- 系统安装2---BIOS设置
对于新的电脑通过U盘安装Windows系统,我们第一步绝对是修改BIOS设置.在这里面我们要修改几项比较重要的选项.如下介绍: 修改第一启动项:目的就是让电脑的第一启动项变为U盘启动. 调节引导方式: ...
- python基础----求水仙花数
水仙花数,即一个三位数,各个位上的数字的三次方相加,等于该数本身.如:153 = 1**3 + 5 ** 3 + 3 ** 3 def is_narc_num(n): # if n <100 o ...
- Codeforces 497B Tennis Game( 枚举+ 二分)
B. Tennis Game time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- 【目录】sql server 性能调优
随笔分类 - sql server 性能调优 sql server 性能调优之 资源等待之网络I/O 摘要: 一.概述 与网络I/O相关的等待的主要是ASYNC_NETWORK_IO,是指当sql s ...