Django从理论到实战(part27)--ORM模型的增删改查操作
学习笔记,仅供参考
参考自:Django打造大型企业官网–Huang Y;
本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的记录一下。
ORM模型的增删改查操作
首先,我们看一下我们的models.py文件中的Book类:
from django.db import models# Create your models here.class Book(models.Model):#定义一个自增长的主键bookid = models.AutoField(primary_key = True)name = models.CharField(max_length=20,null=False)author = models.CharField(max_length=20,null=False)price = models.FloatField(default=0)
我们将基于这个类对应的数据表进行增删改查操作。
对数据库的增删改查一系列操作,我们可以在视图函数中完成,也可以在Django Shell中进行。在下面的例子中,我先利用视图函数增加记录,再用Django Shell进行其他数据库操作。
增加记录
- 在视图函数中进行添加操作
bookstore应用下的views.py文件:
from django.http import HttpResponse
from .models import Book# Create your views here.def add_book(request):book = Book(name = "统计学", author = "贾俊平", price = 25)book.save()return HttpResponse("图书添加成功!")
bookstore应用下的urls.py文件:
from django.contrib import admin
from django.urls import path
from . import viewsurlpatterns = [path('add_book/', views.add_book),
]
主urls.py模块:
from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('bookstore/', include("bookstore.urls")),
]
向http://127.0.0.1:8000/bookstore/add_book/发起请求:
查看bookstore_book数据表中的记录:
mysql> select * from bookstore_book;
+--------+--------+--------+-------+
| bookid | name | author | price |
+--------+--------+--------+-------+
| 1 | 统计学 | 贾俊平 | 25 |
+--------+--------+--------+-------+
1 row in set (0.01 sec)
- 在Django Shell中进行添加操作
启动Django Shell:
python manage.py shell
添加记录:
>>> from bookstore.models import Book
>>> book = Book(name = "机器学习", author = "周志华", price = 50)
>>> book.save()
查看bookstore_book数据表中的记录:
mysql> select * from bookstore_book;
+--------+----------+--------+-------+
| bookid | name | author | price |
+--------+----------+--------+-------+
| 1 | 统计学 | 贾俊平 | 25 |
| 2 | 机器学习 | 周志华 | 50 |
+--------+----------+--------+-------+
2 rows in set (0.00 sec)
查询单个记录
查询主键值(primary_key)等于1的记录:
>>> book = Book.objects.get(pk = 1)
>>> book
<Book: Book object (1)>
可以看到book得到了一个Book类的实例对象,这样的显示对于我们而言没有什么意义,为此,我们可以通过重写Book类的 __str__
方法,改变它的返回值:
from django.db import modelsclass Book(models.Model):#定义一个自增长的主键bookid = models.AutoField(primary_key = True)name = models.CharField(max_length=20,null=False)author = models.CharField(max_length=20,null=False)price = models.FloatField(default=0)def __str__(self):return "[name:{}, author:{}, price:{}]".format(self.name, self.author, self.price)
我们重启Django shell,并重新查询:
>>> from bookstore.models import Book
>>> book = Book.objects.get(pk = 1)
>>> book
<Book: [name:统计学, author:贾俊平, price:25.0]>
Very Well !
查询多条数据
我们再增加几条记录,并进行查询操作:
>>> books = Book.objects.filter(author='何晓群')
>>> for book in books:
... print(book)
...
[name:多元统计分析, author:何晓群, price:25.0]
[name:应用回归分析, author:何晓群, price:20.0]
修改数据
>>> book = Book.objects.get(name='机器学习')
>>> book.price = 45
>>> book.save()
查看bookstore_book数据表中的记录:
mysql> select * from bookstore_book;
+--------+--------------+--------+-------+
| bookid | name | author | price |
+--------+--------------+--------+-------+
| 1 | 统计学 | 贾俊平 | 25 |
| 2 | 机器学习 | 周志华 | 45 |
| 3 | 多元统计分析 | 何晓群 | 25 |
| 4 | 应用回归分析 | 何晓群 | 20 |
+--------+--------------+--------+-------+
4 rows in set (0.00 sec)
删除数据
>>> book = Book.objects.get(name='机器学习')
>>> book.delete()
(1, {'bookstore.Book': 1})
查看bookstore_book数据表中的记录:
mysql> select * from bookstore_book;
+--------+--------------+--------+-------+
| bookid | name | author | price |
+--------+--------------+--------+-------+
| 1 | 统计学 | 贾俊平 | 25 |
| 3 | 多元统计分析 | 何晓群 | 25 |
| 4 | 应用回归分析 | 何晓群 | 20 |
+--------+--------------+--------+-------+
3 rows in set (0.00 sec)
数据排序
按照价格从小到大对书籍进行排序:
>>> books = Book.objects.order_by("price")
>>> for book in books:
... print(book)
...
[name:应用回归分析, author:何晓群, price:20.0]
[name:统计学, author:贾俊平, price:25.0]
[name:多元统计分析, author:何晓群, price:25.0]
Django从理论到实战(part27)--ORM模型的增删改查操作相关推荐
- 后盾网lavarel视频项目---lavarel使用模型进行增删改查操作
后盾网lavarel视频项目---lavarel使用模型进行增删改查操作 一.总结 一句话总结: 使用模型操作常用方法 查一条:$model=Tag::find($id); 删一条:Tag::dest ...
- Django从理论到实战(part26)--ORM模型
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...
- Django(四):ORM模型的增删改成操作+图片字段的处理
文章目录 一.ORM字段类型 1.字段类型 2.字段属性 3.元数据 二.ORM的单表操作 2.1 准备工作 2.2 添加数据 2.3 查询数据 2.4 修改数据 2.5 删除数据 三.多表查询(一对 ...
- mysql 增删修模型_48.Python中ORM模型实现mysql数据库基本的增删改查操作
首先需要配置settings.py文件中的DATABASES与数据库的连接信息, DATABASES = { 'default': { 'ENGINE': 'django.db.backends.my ...
- python增删改查的框架_简单的Django框架增删改查操作
Django之orm对MysqL数据库的增删改查操作简介: 利用Django中orm来查找数据库中的数据,对数据库进行增.删.改.查: 增:新增数据 # 操作数据库user表新增记录 # 方式1: u ...
- python diango 增删改查_python中关于django对数据库Mysql的增删改查操作详解
下面小编就为大家带来一篇python django 增删改查操作 数据库Mysql.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 下面介绍一下django增删改查操作: ...
- Online Coding开发模式 (通过在线配置实现一个表模型的增删改查功能,无需写任何代码)
JEECG 智能开发平台. 开发模式由代码生成器转变为Online Coding模式 (通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义 ...
- Django 07. django框架模型之增删改查基本操作
简介 django框架模型之数据库表增删改查基本操作 1. 生成数据库表结构 models.py #!/usr/bin/env python # -*- coding: utf-8 - ...
- python django ORM 简单的增删改查案例记录
在学习中摸索简单的ORM和模板层html的数据交互中的增删改查功能. 主要和网络教程不同的是我查询用的是fileter去对象,再在html中用for in给对象实例化,再获取对应属性的值,而b站的教程 ...
最新文章
- Android -- Annotation(注解)原理详解及常见框架应用
- 【BZOJ1452】[JSOI2009]Count(树状数组)
- JDK源码学习之前言
- 华为员工 iPhone 发文遭罚;百度遭约谈勒令整改;锤子 1577 万元被法院保全 | 极客头条...
- Sublime 格式化 JSON
- Windows下安装NetCat
- star法则 java_STAR法则(示例代码)
- 基金投资理财专栏介绍
- Discuz! 模板制作
- 全球前沿技术趋势报告;华为发布Mate 40/Pro 系列新机;Windows 计算器移植到到 Linux...
- HBase集群出现NotServingRegionException问题的排查及解决方法
- 解析北斗部标协议_部标一体机北斗模块预测试
- 海洋cms标签-海洋cms模板标签手册-海洋cms模板标签全套
- 基于WIFI信号的呼吸和心率检测(论文总结)
- docker搭建searx_Searx – 尊重隐私的开源搜索引擎
- idea下载安装破解详解
- php word 开发指南大全 点击目录查看所有功能
- shell 常用工具指令
- 线性与非线性规划:随机方向法
- hdu 1983 Kaitou Kid - The Phantom Thief (2)