龙空技术网

python web开发(四)Django ORM 实现简单的增删查改

骑着猪猪的CodeMonkey 343

前言:

如今同学们对“djangoorm的增删改查”都比较关怀,小伙伴们都需要学习一些“djangoorm的增删改查”的相关资讯。那么小编在网摘上搜集了一些有关“djangoorm的增删改查””的相关内容,希望你们能喜欢,你们快快来学习一下吧!

Django ORM

优缺点分析

优点:

1.简单,不用些sql语句

2.开发效率高

缺点:

1.相对与直接写的sql语句,执行效率上有差距

数据库相关配置

在setting.py中配置:

DATABASES = { 'default': { #数据库类型 'ENGINE': 'django.db.backends.mysql', #数据库连接地址 'HOST':"127.0.0.1", #端口 'PORT':'3306', #数据库名称 'NAME': 'Django_Book', #用户 'USER':"root", #密码 'PASSWORD':'qwer1234'  }}

告诉Django用pymysql 代替My'SQLDB 连接数据库,在Django项目(不是应用)中的init.py中:

import pymysql#告诉Django用pymysql代替默认的MySQLDBpymysql.install_as_MySQLdb()

定义数据模型类

from django.db import models​# Create your models here.class BOOK(models.Model): id = models.AutoField(primary_key=True)#创建一个自增的主键ID, title=models.CharField(max_length=20)#书名 author= models.CharField(max_length=20)#作者 money = models.FloatField()#售价

根据数据模型生成表

1.生成迁移文件

命令:python manage.py makemigrations

2.执行迁移生成表

命令:python manage.py migrate

增删查改的操作

<!DOCTYPE html>​<html lang="en" xmlns=""><head> <meta charset="utf-8" /> <title>书籍列表</title></head><body> <form method="post" action="/add_book_interface"> 书名<input name="title" /><br /> 作者<input name="author" /><br /> 售价<input name="money" /><br /> <button type="submit">保存</button>​ </form> </body></html>​def add_book_func(request): #id = request.POST.get("id") #实例化一个Book的对象 b=models.BOOK() #将获取到的参数赋给对象的对应属性 b.title = request.POST.get("title") b.author = request.POST.get("author") b.money = request.POST.get("money") #保存到数据库中 b.save() list = models.BOOK.objects.all() print("*"*100) return render(request,"book_list.html",{"book_list":list}) 

查询出所有结果

<!DOCTYPE html>​<html lang="en" xmlns=""><head> <meta charset="utf-8" /> <title>书籍列表</title></head><body> <table> <thead> <tr> <th>ID</th> <th>书名</th> <th>作者</th> <th>售价</th> <th>操作</th> </tr> </thead> <tbody> <!-- 将list传到前端循环读取数据 --> {% for item in book_list %} <tr> <td>{{item.id}}</td> <td>{{item.title}}</td> <td>{{item.author}}</td> <td>{{item.money}}</td> <td><a href="/del_book?id={{item.id}}">删除</a> </td> </tr> {% endfor %} </tbody> </table> <a href="/add_book">添加书籍</a> </body></html>​def book_list(request): """ 取数据库查询所有的书籍 """ list = models.BOOK.objects.all() print(list) return render(request,"book_list.html",{"book_list":list})

删除

def del_book(request): id = request.GET.get("id") book = models.BOOK.objects.get(id=id) print(book.delete()) list = models.BOOK.objects.all() print("*"*100)  return render(request,"book_list.html",{"book_list":list})

修改

def update_book(request): #根据id找到对应的book id = request.POST.get("id") #修改book对象的对应属性的值 b = models.Book.objects.get(id=id) b.id = request.POST.get("id") b.title = request.POST.get("title") b.author = request.POST.get("author") b.money = request.POST.get("money") #将信息回写回数据库,注:这里与添加的方法相同,Django会自动判断数据库中是否有这个属性,并执行相应的操作(增加或修改) b.save() list = models.BOOK.objects.all() Print("*"*100) return render(request,"book_list.html",{"book_list":list})

标签: #djangoorm的增删改查 #django增删改查学生查询案例