学习笔记,仅供参考

参考自: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模型的增删改查操作相关推荐

  1. 后盾网lavarel视频项目---lavarel使用模型进行增删改查操作

    后盾网lavarel视频项目---lavarel使用模型进行增删改查操作 一.总结 一句话总结: 使用模型操作常用方法 查一条:$model=Tag::find($id); 删一条:Tag::dest ...

  2. Django从理论到实战(part26)--ORM模型

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...

  3. Django(四):ORM模型的增删改成操作+图片字段的处理

    文章目录 一.ORM字段类型 1.字段类型 2.字段属性 3.元数据 二.ORM的单表操作 2.1 准备工作 2.2 添加数据 2.3 查询数据 2.4 修改数据 2.5 删除数据 三.多表查询(一对 ...

  4. mysql 增删修模型_48.Python中ORM模型实现mysql数据库基本的增删改查操作

    首先需要配置settings.py文件中的DATABASES与数据库的连接信息, DATABASES = { 'default': { 'ENGINE': 'django.db.backends.my ...

  5. python增删改查的框架_简单的Django框架增删改查操作

    Django之orm对MysqL数据库的增删改查操作简介: 利用Django中orm来查找数据库中的数据,对数据库进行增.删.改.查: 增:新增数据 # 操作数据库user表新增记录 # 方式1: u ...

  6. python diango 增删改查_python中关于django对数据库Mysql的增删改查操作详解

    下面小编就为大家带来一篇python django 增删改查操作 数据库Mysql.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 下面介绍一下django增删改查操作: ...

  7. Online Coding开发模式 (通过在线配置实现一个表模型的增删改查功能,无需写任何代码)

    JEECG 智能开发平台. 开发模式由代码生成器转变为Online Coding模式                      (通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义 ...

  8. Django 07. django框架模型之增删改查基本操作

    简介 django框架模型之数据库表增删改查基本操作 1. 生成数据库表结构         models.py #!/usr/bin/env python # -*- coding: utf-8 - ...

  9. python django ORM 简单的增删改查案例记录

    在学习中摸索简单的ORM和模板层html的数据交互中的增删改查功能. 主要和网络教程不同的是我查询用的是fileter去对象,再在html中用for in给对象实例化,再获取对应属性的值,而b站的教程 ...

最新文章

  1. Android -- Annotation(注解)原理详解及常见框架应用
  2. 【BZOJ1452】[JSOI2009]Count(树状数组)
  3. JDK源码学习之前言
  4. 华为员工 iPhone 发文遭罚;百度遭约谈勒令整改;锤子 1577 万元被法院保全 | 极客头条...
  5. Sublime 格式化 JSON
  6. Windows下安装NetCat
  7. star法则 java_STAR法则(示例代码)
  8. 基金投资理财专栏介绍
  9. Discuz! 模板制作
  10. 全球前沿技术趋势报告;华为发布Mate 40/Pro 系列新机;Windows 计算器移植到到 Linux...
  11. HBase集群出现NotServingRegionException问题的排查及解决方法
  12. 解析北斗部标协议_部标一体机北斗模块预测试
  13. 海洋cms标签-海洋cms模板标签手册-海洋cms模板标签全套
  14. 基于WIFI信号的呼吸和心率检测(论文总结)
  15. docker搭建searx_Searx – 尊重隐私的开源搜索引擎
  16. idea下载安装破解详解
  17. php word 开发指南大全 点击目录查看所有功能
  18. shell 常用工具指令
  19. 线性与非线性规划:随机方向法
  20. hdu 1983 Kaitou Kid - The Phantom Thief (2)

热门文章

  1. 大话数据结构02 :线性表链式存储 C++
  2. extjs 表单设置html5,ExtJS 配置和表格控件使用
  3. mysql增删改查脚本_脚本方式实现数据库增删改查
  4. linux gz 解压缩
  5. Runnable和Thread基础---多线程学习笔记(二)
  6. 解决ADB server didn't ACK问题,连上手机问题
  7. Coding and Paper Letter(三十九)
  8. Windows中添加自己的程序到开机启动中(添加服务,添加注册表)
  9. 反思O2O演化的三个时代,大数据与智能化才是未来所在
  10. XMPPFramework导入