前言

什么是ORM?  ORM(对象关系映射)指用面向对象的方法处理数据库中的创建表以及数据的增删改查等操作。

简而言之,就是将数据库的一张表当作一个类,数据库中的每一条记录当作一个对象。在Django中定义一个类,就是在数据库中创建一张表格。在Django中实例化一个类的对象,就是在数据库中增加了一条记录。在Django中删除一个对象,就是在数据库中删除了一条记录。在DJango中更改一个对象的属性,就是在数据库中修改一条记录的值。在django中遍历查询对象的属性值,就是在数据库中查询记录的值。

下面是几条django的views视图函数中的命令语句。

一,增(create,save)

from app01.models import *#create方式一:   Author.objects.create(name='Alvin')#create方式二:   Author.objects.create(**{"name":"alex"})#save方式一:     author=Author(name="alvin")
                    author.save()#save方式二:     author=Author()author.name="alvin"author.save()

注意,增加时create+save两个组合,create是增的动作,save是加的动作,缺一个都不中。

二,删(delete)

>>> Book.objects.filter(id=1).delete()
(3, {'app01.Book_authors': 2, 'app01.Book': 1})如果是多对多的关系: remove()和clear()方法: #正向
book = models.Book.objects.filter(id=1)#删除第三张表中和女孩1关联的所有关联信息
book.author.clear()        #清空与book中id=1 关联的所有数据
book.author.remove(2)  #可以为id
book.author.remove(*[1,2,3,4])     #可以为列表,前面加*#反向
author = models.Author.objects.filter(id=1)
author.book_set.clear() #清空与boy中id=1 关联的所有数据

三,改(update和save)

#---------------- update方法直接设定对应属性----------------models.Book.objects.filter(id=3).update(title="PHP")##sql:##UPDATE "app01_book" SET "title" = 'PHP' WHERE "app01_book"."id" = 3; args=('PHP', 3)#--------------- save方法会将所有属性重新设定一遍,效率低-----------obj=models.Book.objects.filter(id=3)[0]obj.title="Python"obj.save()
# SELECT "app01_book"."id", "app01_book"."title", "app01_book"."price",
# "app01_book"."color", "app01_book"."page_num",
# "app01_book"."publisher_id" FROM "app01_book" WHERE "app01_book"."id" = 3 LIMIT 1;
#
# UPDATE "app01_book" SET "title" = 'Python', "price" = 3333, "color" = 'red', "page_num" = 556,
# "publisher_id" = 1 WHERE "app01_book"."id" = 3;

,查(update和save)

# 查询相关API:#  <1>filter(**kwargs):      它包含了与所给筛选条件相匹配的对象#  <2>all():                 查询所有结果#  <3>get(**kwargs):         返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。#-----------下面的方法都是对查询的结果再进行处理:比如 objects.filter.values()--------#  <4>values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列 model的实例化对象,而是一个可迭代的字典序列#  <5>exclude(**kwargs):     它包含了与所给筛选条件不匹配的对象#  <6>order_by(*field):      对查询结果排序#  <7>reverse():             对查询结果反向排序#  <8>distinct():            从返回结果中剔除重复纪录#  <9>values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列#  <10>count():              返回数据库中匹配查询(QuerySet)的对象数量。# <11>first():               返回第一条记录# <12>last():                返回最后一条记录#  <13>exists():             如果QuerySet包含数据,就返回True,否则返回False。

转载于:https://www.cnblogs.com/FWF1944/p/10878022.html

Django中ORM对数据库的增删改查操作相关推荐

  1. 【接口测试】Day5-使用pymysql库对mysql数据库进行增删改查操作

    目录 今日目标 一.数据库介绍 二.数据库基本操作 1.安装 2.操作流程(重点) 1. 创建连接 2. 获取游标 3. 执行sql 4. 关闭游标 5. 关闭连接 3.数据准备 4.数据库基本操作 ...

  2. Django数据库数据增删改查操作

    一. 无需实现model.py文件获取实例对象就能直接通过连接数据库进行数据的增删改查操作 # 连接数据库用于查询(查询单个或多个) def db_query(sql):# 打开数据库连接db = p ...

  3. JDBC-03:PreparedStatement如何实现对数据库的增删改查操作

    文章目录 一.使用PreparedStatement实现CRUD操作 (1)使用PreparedStatement实现增删改操作 1.PreparedStatement介绍 2.实现数据库的添加操作 ...

  4. php修改数据库字段内容,php对数据库的增删改查操作

    在我看来数据库是个既复杂又高深莫测的东西,但百分之八十左右的程序员都不需要去精通他,对于我们前端开发来说,只要会数据库的增删改查语句就差不多了.首先我们来说说sql的增删改查语句. 一.增删改查 插入 ...

  5. 利用Mybatis对数据库进行增删改查操作

    文章目录 mybatis模糊查找 先来了解一下 #{}和${}的使用 parameterType和resultType的使用 selectOne和selectList的使用 mysql自增主键返回 方 ...

  6. JDBC中用控制台简单对数据库进行增删改查操作(IDEA.2023)

    文章目录 前言 一.首先是每个操作共用的操作大纲 1.注册驱动 2.创建连接 3.编写SQL语句结果,动态值的部分使用?代替 4.创建prepareStatement,并且传入SQL语句的结果 5.占 ...

  7. 欢迎来到Jsp编程课时十二——今天实现的目标是。@1将数据库的数据发送到浏览器。@2利用浏览器实现对数据库的增删改查操作。@3理解MVC三层架构的定义。

    完成项目会有以下的效果. JSP第二十课:Mvc+Mysql+Servlect+Jsp实现在浏览器上对数据库的增删改查. MVC全名是Model View Controller, 是 @@1模型(mo ...

  8. nodejs对mongodb数据库的增删改查操作(转载)

    首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-l ...

  9. 二、PHP基础——连接msql数据库进行增删改查操作 实战:新闻管理项目

    Mysql扩展 PHP针对MySQL数据库操作提供的扩展:允许PHP当做MySQL的一个客户端连接服务器进行操作. 连库基本操作 连接数据库服务器 1)资源 mysql_connect(服务器地址,用 ...

  10. mysql 表结构 增删改查_mysql学习【第3篇】:数据库之增删改查操作

    注意的几点: 1.如果你在cmd中书命令的时候,输入错了就用\c跳出 2.\s查看配置信息 一.操作文件夹(库) 增:create database db1 charset utf8; 删:drop ...

最新文章

  1. C#日期格式精确到毫秒 !!
  2. 障碍期权定价 python_[宜配屋]听图阁
  3. 用原生JavaScript实现简单轮播图
  4. 二叉树笔记(深度遍历与广度遍历+13道leetcode题目(深度3道、广度10道))
  5. 计算机技术与自动化期刊官网,计算技术与自动化是什么级别
  6. Spark 调用 hive使用动态分区插入数据
  7. vonic 环境配置_Vonic 2.0 全新文档站上线
  8. 在Raspberry Pi上轻松设置.NET Core并使用VS Code进行远程调试
  9. 矩阵广义逆求解(QR、svd、LU)
  10. FullCalendar 的学习笔记(一)
  11. Android的ImageView中scaleType属性值的详解
  12. VUE调用打印机打印页面
  13. SCI写作Response to reviewers 范例
  14. linux系统的python版本_Linux系统下多版本Python管理
  15. OpenGL 4.0 学习3.2--各种颜色的RGB值
  16. 写给冬天里开放的那些花儿
  17. Go语言核心之美-必读
  18. Gradle 下载及代理设置
  19. 数据库显示连接服务器错误怎么解决方法,怎样解决数据库连接出错问题
  20. 工业4.0万物联网兴起 智能手机或将消亡

热门文章

  1. RabbitMQ 线上事故!慌的一批,脑袋一片空白……
  2. Uber的微服务架构实践
  3. 不知道这十项Linux常识,就别说自己玩过Linux!
  4. 运维的日常:如果回到18岁,你还会选择运维行业么?
  5. openwrt源码分析_编译个性化的OPENWRT固件(openWRT源码修改)
  6. 2018辛苦一年了,程序员这样跟大boss谈2019加薪,谈薪杯具变喜剧
  7. pcie routing
  8. 显示和隐藏Mac隐藏文件的命令
  9. 【BZOJ 2306】 2306: [Ctsc2011]幸福路径 (倍增floyd)
  10. 20145238-荆玉茗 《网络对抗》免杀原理与实践