新增操作:
方式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. mac 调出任何来源方法

    如果没有这个选项的话(macOS Sierra 10.12),打开终端,执行sudo spctl --master-disable即可 这可以很好的解决掉 部分软件 显示已损坏的办法

  2. 学着去看开 你不是一个low程序员

    http://www.cocoachina.com/programmer/20160627/16835.html 看完这篇文章 感谢作者

  3. idea 自定义toString

    实现功能: 1.自定义json格式 2.字符及时间类型添加null判断 3.时间进行格式化 步骤: 1.alt+insert-----toString---setting----templates 2 ...

  4. [题解]Codeforces Round #519 - C. Smallest Word

    [题目] C. Smallest Word [描述] IA有一个由若干个'a'和'b'组成的字符串,IA可以翻转该字符串的任意长的前缀,IA想通过这样的操作得到一个字典序最小的字符串,求一种可能的翻转 ...

  5. Dashboard究竟是什么,它在数据展示上的优势何在?

    ​相信很多人在做数据分析工作的时候都遇到这种情况,辛辛苦苦做出来的数据报表老板看了嫌弃不够直观.生动,客户看了嫌弃不够高大上.这个时候不妨尝试一下使用Dashboard来展示报表数据,可能有些人对Da ...

  6. Codeforces Round #725 (Div. 3) A-D,F题解

    A. Stone Game 思路:总共3种情况,都从最左端被拿走,都从最右端被拿走,左侧的从最左端被拿走且右侧的从最右端被拿走,取最小值即可 代码: //CF-725.A #include<bi ...

  7. HTML分块

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>菜鸟 ...

  8. MySql绿色版的安装

    MySql绿色版的安装 1.下载 2.配置环境变量,执行命令 mysqld --initialize-insecure --user=mysql 会创建出data文件夹 3.创建my.ini文件 [c ...

  9. JAVA——类与对象

    目录 类与对象 一.类 二.对象 2.1对象的内存布局形式 三.类与对象 3.1如何创建 3.2如何访问属性 3.2类与对象的分配机制 3.2.1Java内存的结构分析 注意事项和细节 类与对象 为什 ...

  10. WPF页面后台代码InitializeComponent()报错

    InitializeComponent(); 报错: 查看对应的前台xaml文件中,主标签中是否缺失引用: x:class="命名空间.类名"