新增操作:
方式1:
book = BookInfo(title='西游记',price=99)
book.save()

方式2:
BookInfo.objects.create(title='西游记',price=99)

方式3:
BookInfo.objects.bulk_create(bookinfoList)

修改操作:
方式1:
book = BookInfo.objects.get(id=1)
book.name='西游记'
book.save()

方式2:
BookInfo.objects.filter(name='西游记').update(name='三国演义')

删除操作:
方式1:
BookInfo.objects.get(id=1).delete()

方式2:
BookInfo.objects.filter(id=1).delete()

查询操作:
BookInfo.objects.all()查询所有结果 QuerySet
BookInfo.objects.count()查询该表数据量

过滤查询
book = BookInfo.objects.get(id=1)查询id为1的一条数据 book--QuerySet book.title
BookInfo.objects.filter(title__exact='西游记') 简写为(title='西游记')
BookInfo.objects.filter(title__contains='游')
BookInfo.objects.filter(title__startswith/endswith = '西') 以指定值开头或结尾
以上运算符都区分大小写,在这些运算符前加上i表示不区分大小写,如iexact、icontains、istartswith、iendswith

BookInfo.objects.filter(title__isnull=False)
BookInfo.objects.filter(id__in=[1,2,4])

BookInfo.objects.filter(id__gt=3)
gt :大于 (greater then)
gte :大于等于 (greater then equal)
lt :小于 (less then)
lte :小于等于 (less then equal)

BookInfo.objects.exclude(id=3)

year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算
BookInfo.objects.filter(pub_data__year=1993)
BookInfo.objects.filter(pub_data__gt=date(1990,1,1))

查询阅读量大于等于2倍评论量的图书
BookInfo.objects.filter(read_gte=F('comment')*2)

查询阅读量大于20,并且编号小于3的图书
BookInfo.objects.filter(read_gt=20,id__lt=3)

Q对象可以使用&、|连接,&表示逻辑与,|表示逻辑或
查询阅读量大于20,或编号小于3的图书,只能使用Q对象实现,Q对象前可以使用~操作符,表示非not
BookInfo.objects.filter(Q(read_gt=20) | Q(pk__lt=3))

使用aggregate()过滤器调用聚合函数。聚合函数包括:Avg(平均),Count(数量),Max(最大),Min(最小),Sum(求和),被定义在django.db.models中,aggregate的返回值是一个字典类型
BookInfo.objects.aggregate(Sum('read'))

排序
BookInfo.objects.all().order_by('read')
BookInfo.objects.all().order_by('-read')降序

分组查询
User.objects.values('is_active').annotate(total=Count('id')) values分组的依据 annotate查询的内容

关联查询
一对多:
book = BookInfo.objects.get(id=1)
herio = book.herioinfo_set.all()

多对一
herio = Herioinfo.objects.get(id=1)
book = herio.book
id = book_id

关联过滤查询
由多模型类条件查询一模型类数据
BookInfo.objects.filter(heroinfo__name='孙悟空')

由一模型类条件查询多模型类数据:
Herioinfo.objects.filter(book__read__gte=30)

查询集 QuerySet 对查询集可以再次调用过滤器进行过滤
all():返回所有数据。
filter():返回满足条件的数据。
exclude():返回满足条件之外的数据。
order_by():对结果进行排序。

创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代、序列化、与if合用
使用同一个查询集,第一次使用时会发生数据库的查询,然后Django会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数

python django对数据表的增删改查操作的更多相关文章

  1. Django中多表的增删改查操作及聚合查询、F、Q查询

    一.创建表 创建四个表:书籍,出版社,作者,作者详细信息 四个表之间关系:书籍和作者多对多,作者和作者详细信息一对一,出版社和书籍一对多 创建一对一的关系:OneToOne("要绑定关系的表 ...

  2. python利用xmlrpc方式对odoo数据表进行增删改查操作

    # -*- encoding: utf-8 -*- import xmlrpclib #导入xmlrpc库,这个库是python的标准库. username ='admin' #用户登录名 pwd = ...

  3. AngularJS中使用$http对MongoLab数据表进行增删改查

    本篇体验使用AngularJS中的$http对MongoLab数据表进行增删改查. 主页面: <button ng-click="loadCourse()">Load ...

  4. Mysql数据表的增删改查

    ---恢复内容开始--- Mysql数据表的增删改查 1.创建表   语法:CREATE TABLE 表名(字段1,字段2,字段3.......) CREATE TABLE `users` ( `us ...

  5. C# - VS2019 通过DataGridView实现对Oracle数据表的增删改查

    前言 通过VS2019建立WinFrm应用程序,搭建桌面程序后,通过封装数据库操作OracleHelper类和业务逻辑操作OracleSQL类,进而通过DataGridView实现对Oracle数据表 ...

  6. Hibernate5笔记2--单表的增删改查操作

    单表的增删改查操作: (1)定义获取Session和SessionFactory的工具类: package com.tongji.utils; import org.hibernate.Session ...

  7. mysql 数据表的增删改查 目录

    mysql 表的增删改查 mysql 表的增删改查 修改表结构 mysql 复制表 mysql 删除表

  8. Django 文件配置、pycharm及django连接数据库、表的增删改查 总结

    静态文件配置 1.你在浏览器中输入网址能够有响应的资源返回给你 是因为后端已经提前给你开设该资源的接口,也就意味着你所能 访问到的资源 都是人家事先定义好的 2.django如何给用户开设资源接口呢? ...

  9. MySQL数据库 | 数据表的增删改查

    MySQL数据的增删改查(crud) 本文结构 一.增加 create 二.修改 update 三.查询 retrieve(简单查询,下篇详细展开) 四.删除 delete 首先,创建简单的class ...

随机推荐

  1. ESXI系统从0搭建流程

    ESXI系统从0搭建流程 简单介绍 简单介绍:项目中使用到了这个系统,我自己不会搭建,但是请教别人之后自己成功搭建出来了此系统.所以在此记录一下搭建流程,希望能够帮助"零"小白. ...

  2. python2批量改密码

    客户端代码: 如果注释最下面三行socket发送,可以直接在本机修改密码不发送数据到服务端. # -*- coding: utf-8 -*- #author:Guoyabin import rando ...

  3. scanf坑我的那些年

    scanf函数作为用户输入指令给计算机的一种输入方法,它的使用有如下几被坑点: scanf用法:#include<stdio.h>;scanf("格式控制符",地址表列 ...

  4. 解决方案:ipv4地址手动设置之后关掉推出再打开就没了(静态Ip设置好之后又自动变动态IP)

    解决方案:ipv4地址手动设置之后关掉推出再打开就没了(静态Ip设置好之后又自动变动态IP) 1.情况说明:修改好IP,关掉窗口后,又变成 自动获取IP (如图二) 2.解决方案: 1)调出 服务和应 ...

  5. Tabluea、Smartbi可视化仪表盘创建流程图分享

    你知道Tableau.Smartbi在可视化仪表盘制作步骤上有何差异吗?下面一起来了解吧~ 根据上面的流程图我们可以了解到,不同于Smartbi是在同一界面即可完成的,Tableau是由很多个工作表组 ...

  6. 数据分析六个步骤,一款BI工具即可全部搞定

    数据分析是将大量的数据转化为有价值的信息,以求最大化地利用数据的功能,发挥数据的作用.数据分析的类型可以分为现状分析.原因分析.预测分析,按流程分为以下6个步骤: (1) 明确数据分析目的和思路 明确 ...

  7. 【C#单元测试】 开篇

    官方:https://docs.microsoft.com/zh-cn/visualstudio/test/install-third-party-unit-test-frameworks?view= ...

  8. Qt:QTableWidgetItem

    0.说明 QTableWidgetItem指明QTableWidget中的一个Item.Item通常包含文本.图标.checkbox. 最常用的构造Item的方式是:不指定该Item所在的TableW ...

  9. prometheus-数据展示之grafana部署和数据源配置

    1.监控pods .   prometheus再部署以后,会自带cAdvisor.结果如下: 2.K8S集群状态监控.需要使用kube-state-metrics插件.部署以后 kubernetes. ...

  10. Linux CentOS7.X-安装mysql5.7数据库(安装包tar.gz)

    一.下载对应版本的mysql 1.官网下载压缩安装包. 进入到mysql官网下载自己对应版本的mysql,下载地址:https://dev.mysql.com/downloads/mysql/5.7. ...