Python通过定义类实现增删改查(期末考试)

python高级编程期末测试

别看我挣的少,但是我省的多,昨天法拉利又省下两百多万。

一、通过创建自己类来实现增删改查

我们已经利用模型实现单表的增删改查了 现在 我们不想使用模型来操作数据库
我们可以自己定义模型

那么 如何通过自己创建的类实现增删改查

1.增加代码展示:

from django.test import TestCase# Create your tests here.
import pymysql
# 我们已经利用模型实现单表的增删改查了 现在 我们不想使用模型来操作数据库
# 我们可以自己定义模型class Stu:def __init__(self,sid,sname,ssex):self.sid=sidself.sname=snameself.ssex=ssex
class StuDao:def __init__(self):# 建立连接self.con=pymysql.connect(host="localhost",user="root",password="123456",port=3306,database="jtxy")def add(self,name,sex):# 得到操作数据库的游标对象cur=self.con.cursor()# 执行insert sql %s表示字符串cur.execute("insert into stu values('%s','%s',null)"%(name,sex))# 提交sqlself.con.commit()# 关闭连接释放内存self.con.close()

我们修改一下视图函数中的增加内容 将原来的模型替换为我们自己定义的类

def addStu(request):#数据库在哪儿 数据库名 用户名 密码name=request.POST.get("sname")sex=request.POST.get("ssex")dao=StuDao()dao.add(name,sex)#stu=Student.objects.create(sname=name,ssex=sex)# stu=Student(sname=name,ssex=sex)#stu.save()return render(request,"add_stu.html")

点击重新运行 我们输入试一下能不能运行

添加成功

2.查询代码展示:

    def findStudent(self):# 得到操作数据库的游标对象cur = self.con.cursor()cur.execute("select sid,sname,ssex from stu")# 获取学生表的所有记录列表studentsList[[1,jhw,nan],[2,yy1,nv]]studentList=cur.fetchall()stuList=[]for lst in studentList:stuList.append(Stu(lst[0],lst[1],lst[2]))# 关闭连接释放内存self.con.close()return stuList

同理 我们修改一下视图函数中的查询内容 将原来的模型替换为我们自己定义的类

def findStu(request):# 从表中获取所有数据# students=Student.objects.all()# {表示把数据带到网页上}dao=StuDao()students=dao.findStudent()return render(request, "show_stu.html",{"students":students})

我们点击查询 发现页面依旧还在 说明可以查询

3.删除代码展示:

 def deleteById(self,id):# 得到操作数据库的游标对象cur = self.con.cursor()cur.execute("delete from stu where sid=%d"%(int(id)))# 提交sqlself.con.commit()# 因为删除以后 还要返回查询结果 所以我们在这里不关闭连接 在查询处关闭即可# 关闭连接释放内存# self.con.close()

同理 我们修改一下视图函数中的删除内容 将原来的模型替换为我们自己定义的类

def deleteStuById(request):id=request.GET.get("id")dao=StuDao()dao.deleteById(id)# 再查询一遍students = dao.findStudent()# Student.objects.filter(sid=id).delete()# 从表中获取所有数据# students=Student.objects.all()# {表示把数据带到网页上}return render(request, "show_stu.html",{"students":students})

我们点击删除 删除成功

4.修改代码展示:

1)回显

    def findStudentById(self,id):# 得到操作数据库的游标对象cur = self.con.cursor()cur.execute("select sid,sname,ssex from stu where sid=%d" %(int(id)))# 获取学生表的一条记录[[1,jhw,nan]lst=cur.fetchone()stu=Stu(lst[0],lst[1],lst[2])# 关闭连接释放内存self.con.close()return stu

同理 我们修改一下视图函数中的根据id查找内容 将原来的模型替换为我们自己定义的类

def findStuById(request):id = request.GET.get("id")dao=StuDao()stu=dao.findStudentById(id)# stu=Student.objects.filter(sid=id).first()# {表示把数据带到网页上} 所以我们创建一个网页return render(request, "updateStu.html", {"students": stu})

我们点击修改 可以看到 成功回显

2)修改

 def updateStuById(self,id,name,sex):# 得到操作数据库的游标对象cur = self.con.cursor()cur.execute("update stu set sname='%s',ssex='%s' where sid=%d" % (name,sex,int(id)))# 提交sqlself.con.commit()

修改视图函数

def updateStu(request):sid=request.POST.get("sid")sname=request.POST.get("sname")ssex=request.POST.get("ssex")# 创建模型# stu=Student.objects.filter(sid=sid).first()# stu.sname=sname# stu.ssex=ssex# stu.save()dao=StuDao()dao.updateStuById(sid,sname,ssex)students = Student.objects.all()# {表示把数据带到网页上}return render(request, "show_stu.html", {"students": students})

我们修改一下内容 将yyq修改为yangkoukou

二、下面我们讲一些标签

1.标签<ul> <li> </li> </ul> :无序列表

2.标签<ol> <li> </li> </ol> :有序列表

 <!--<ul> 无序列表--><ul><li>济南</li><li>淄博</li><li>潍坊</li><li>济宁</li></ul><!--<ol> 有序列表--><ol><li>济南</li><li>淄博</li><li>潍坊</li><li>济宁</li></ol>

3.添加图片:

 <img src="/static/image_2.jpg">

此时我们可能会看不到图片内容 因为我们的django不认识这个图片 所以我们要配置一下

STATIC_URL='static/'
# 指定静态文件夹
STATICFILES_DIRS=[BASE_DIR / "static"
]

我们点击查看网页 就可以看到图片了

4.<div> </div>块标记

 <!--块(矩形)标记 加个边框--><div style="border: 1px;border-style: solid;width: 100px;height: 300px">内容内容内容内容内容内容内容内容内容内容内容内容</div>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/8924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机SCI期刊,IF=9.657,1区TOP,2周内出版!

一、期刊名称 Neural Networks 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;计算机科学 影响因子&#xff1a;7.8 中科院分区&#xff1a;1区TOP 出版方式&#xff1a;订阅模式/开放出版 版面费&#xff1a;选择开放出版需支付$3350 三、期刊简介 神…

美国原装二手keysight86122c安捷伦86122C波长计

是德KEYSIGHT 86122C 波长计 主要功能和规格 特征&#xff1a; 增强型&#xff0c;稳定的HeNe参考激光器&#xff0c;使用寿命更长 包括五年保修&#xff0c;涵盖整个仪器&#xff0c;所有零件 绝对波长精度&#xff1a;0.2 ppm 差分波长精度&#xff1a;0.15 ppm 不到0.…

Springboot+vue项目影城管理系统

摘 要 本论文主要论述了如何使用JAVA语言开发一个影城管理系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述影城管理系统的当前背景以及系统开发的目的&…

正点原子Linux学习笔记(六)在 LCD 上显示 jpeg 图像

在 LCD 上显示 jpeg 图像 20.1 JPEG 简介20.2 libjpeg 简介20.3 libjpeg 移植下载源码包编译源码安装目录下的文件夹介绍移植到开发板 20.4 libjpeg 使用说明错误处理创建解码对象设置数据源读取 jpeg 文件的头信息设置解码处理参数开始解码读取数据结束解码释放/销毁解码对象 …

【动态规划】子数组、子串系列I|最大子数组和|环形子数组的最大和|乘积最大子数组|乘积为正数的最长子数组长度

一、最大子数组和 最大子数组和 算法原理&#xff1a; &#x1f4a1;细节&#xff1a; 1.返回值为dp表每个位置的最大值&#xff0c;而不是只看最后一个位置&#xff0c;因为可能最后一个位置都不选 2.可以直接在填dp表的时候就进行返回值的比较 3.如果初始化选择多开一个位…

2024最新版JavaScript逆向爬虫教程-------基础篇之无限debugger的原理与绕过

目录 一、无限debugger的原理与绕过1.1 案例介绍1.2 实现原理1.3 绕过debugger方法1.3.1 禁用所有断点1.3.2 禁用局部断点1.3.3 替换文件1.3.4 函数置空与hook 二、补充2.1 改写JavaScript文件2.2 浏览器开发者工具中出现的VM开头的JS文件是什么&#xff1f; 一、无限debugger的…

520送男士内裤给男朋友好吗?五大男士内裤测评种草

相信有很多朋友都选在520这个特殊的日子里为心爱的人挑选一份特别的礼物吧&#xff01;如果送礼给男朋友或老公&#xff0c;一份实用的礼物肯定是最佳选择哦&#xff01;很多男性朋友每条内裤都穿很久&#xff0c;如果给男朋友挑选合适的男士内裤&#xff0c;也是一种关心体贴的…

[华为OD]BFS C卷 200 智能驾驶

题目&#xff1a; 有一辆汽车需要从m*n的地图的左上角(起点)开往地图的右下角(终点)&#xff0c;去往每一个地区都需 要消耗一定的油量&#xff0c;加油站可进行加油 请你计算汽车确保从起点到达终点时所需的最少初始油量说明&#xff1a; (1)智能汽车可以上下左右四个方向…

C++ 复习2 输入输出 基本数据类型

输入输出 标准输出流 ( cout ) cout 代表标准输出流&#xff0c;通常用于向屏幕输出数据。 使用操作符 << &#xff08;插入操作符&#xff09;向 cout 发送数据。 例如&#xff0c; std::cout << "Hello, world!" << std::endl; 会在屏幕上打印 …

本地搭建AI环境

本地搭建AI 这几天刚刚看到好兄弟分享的一段关于本地搭建AI的短视频&#xff0c;于是我按照视频里的讲解&#xff0c;进行了实践。感觉非常棒&#xff01;&#xff01;&#xff0c;马上整理成文字与大家分享一下。 在本地启动并运行大型语言模型&#xff0c;运行llama3、phi3…

自然语言处理(NLP)技术有哪些运用?

目录 一、自然语言处理&#xff08;NLP&#xff09;技术有哪些运用&#xff1f; 二、Python进行文本的情感分析 1、NLTK库: 2、TextBlob库: 三、错误排除 一、自然语言处理&#xff08;NLP&#xff09;技术有哪些运用&#xff1f; 自然语言处理&#xff08;NLP&#xff09…

区块链 | NFT 水印:Review on Watermarking Techniques(一)

&#x1f34d;原文&#xff1a;Review on Watermarking Techniques Aiming Authentication of Digital Image Artistic Works Minted as NFTs into Blockchains 1 应用于 NFT 的水印技术 常见的水印技术类型可以分为&#xff1a; 可见 v i s i b l e \mathsf{visible} visi…

循环神经网络(RNN)

大家好&#xff0c;这里是七七&#xff0c;这两天在写关于神经网络相关的知识&#xff0c;面对的是有一定基础的读者哦。 一、RNN核心思想 RNN的核心思想就是曾经的输入造成的影响&#xff0c;会以致影响之后的输入&#xff0c;即隐含层的输出取决于历史数据的全部输入。 三个…

Infuse for Mac激活版:高清影音播放软件

对于热爱影音娱乐的Mac用户来说&#xff0c;Infuse for Mac是一个不容错过的选择。它以其简洁的操作界面和强大的播放功能&#xff0c;为用户带来了全新的影音播放体验。 Infuse for Mac支持广泛的音视频格式&#xff0c;无需额外转换&#xff0c;即可轻松播放您喜爱的影片。无…

Mybatis Plus二级缓存 使用@CacheNamespace 失效@CacheNamespace和@CacheNamespaceRef

1、注解 CacheNamespace(flushInterval 100000,eviction LruCache.class,readWrite false,size 1024)2、xml配置 <cache eviction "LRU" flushInterval "100000" readOnly "true" size "1024"/> 二级缓存&#xff0c;配置文…

【Linux 性能详解】CPU性能分析工具篇

目录 uptime mpstat 实时监控 查看特定CPU核心 pidstart 监控指定进程 组合多个监控类型 监控线程资源 按用户过滤进程 vmstart 用途 基本用法 输出字段 perf execsnoop dstat 通俗解释 技术层面解释 使用示例 总结 uptime uptime 是一个在 Linux 和 Unix…

上班不想用脑子写代码了怎么办?那就试试Baidu Comate啊宝贝

本文目录 前言1、视频编程实战1.1、熟悉代码库中的代码1.2、参考现有代码编写新代码 2、下载使用教程3、使用体验3.1、AutoWork 产品测评3.2、解决有关ajax请求后重定向问题3.3、询问编程相关知识3.3.1、cookie和session的区别与联系3.3.2、数据库中主键外键的相关知识 4、问题…

基于EBAZ4205矿板的图像处理:12图像二值化(阈值可调)

基于EBAZ4205矿板的图像处理&#xff1a;12图像二值化(阈值可调) 我的项目是基于EBAZ4205矿板的阈值可调的图像阈值二值化处理&#xff0c;可以通过按键调整二值化的阈值&#xff0c;key1为阈值加1&#xff0c;key4为阈值减1&#xff0c;key2为阈值加10&#xff0c;key5为阈值…

【bug记录】清除僵尸进程,释放GPU显存

目录 1. 为什么会出现这种情况&#xff1f;2. 解决方案方法一&#xff1a;使用 fuser 命令方法二&#xff1a; 3. 小贴士 在进行深度学习或其他需要GPU支持的任务时&#xff0c;我们有时会发现虽然没有可见的进程在执行&#xff0c;但GPU资源却意外地被占用。这种情况往往会阻碍…

AI换脸原理(4)——人脸对齐(关键点检测)参考文献2DFAN:代码解析

注意,本文属于人脸关键点检测步骤的论文,虽然也在人脸对齐的范畴下。 1、介绍 在本文中,重点介绍了以下几项创新性的成果,旨在为人脸关键点检测领域带来新的突破。 首先,成功构建了一个卓越的2D人脸关键点检测基线模型。这一模型不仅集成了目前最优的关键点检测网络结构,…