Django1.11模型类数据库操作
django模型类数据库操作
数据库操作
添加数据
- 1,创建类对象,属性赋值添加
- book= BookInfo(name='jack',pub_date='2010-1-1')
book.save() - book= BookInfo()
book.name = 'java'
book.pub_date = '2010-1-1'
book.save()
- book= BookInfo(name='jack',pub_date='2010-1-1')
- 2,使用模型类的create方法
- BookInfo.objects.create(name='jack',pub_date='2010-1-1')
直接创建
修改数据
- BookInfo.objects.create(name='jack',pub_date='2010-1-1')
- 1,获取模型类对象,属性赋值修改
- book = BookInfo.objects.get(name='jack')
book.name='tom'
book.pub_date='2010-1-1'
book.save()- 因为修改的是模型类的属性
获取对象的时候必须要使用get查询,获取类对象,
使用filter会报没有name属性,因为filter结果是查询集
- 因为修改的是模型类的属性
- book = BookInfo.objects.get(name='jack')
- 2,使用模型类结果集的update()
可以进行多个修改- BookInfo.objects.filter(name='tom').update(name='jack')
直接修改,返回受影响的行数
update是结果集的方法,使用filter查询删除数据
- BookInfo.objects.filter(name='tom').update(name='jack')
- 1,获取对应模型类对象,调用delete方法删除
- book=BookInfo.objects.get(name='jack').delete()
- 返回删除的个数和对象
- book=BookInfo.objects.get(name='jack').delete()
- 2,使用模型类结果集的delete()
可以进行多个删除- BookInfo.objects.filter(name='jack').delete()
返回删除的个数和对象
数据查询
基本条件查询
- BookInfo.objects.filter(name='jack').delete()
- 基本查询
- get
- 获取单个对象
- all
- 获取所有对象
- count
- 返回对象的个数
- get
- 过滤查询
- filter
- 根据条件获取对象,返回结果集
- exclude
- 根据条件获取不符合条件的对象的结果集
- 语法:属性名字__比较运算符=值
- 比较运算符有
- exact相等
- BookInfo.objects.filter(pk__exact=1)
- BookInfo.objects.filter(pk=1)
- contains包含
- BookInfo.objects.filter(name__contains='p')
- endswith/startswith开头/结尾
- BookInfo.objects.filter(name__startswith='p')
- isnull=True为空
- BookInfo.objects.filter(name__isnull=True)
- in=[]范围
- BookInfo.objects.filter(id__in=[1,2,3])
- gt大于
lt小于
gte大于等于
lte小于等于- BookInfo.objects.filter(id__gt=4)
- 日期查询
year
mouth
day
week
day
hour
minute
second- BookInfo.objects.filter(pub_date__year__gt=1980)
- exact相等
- 比较运算符有
- 语法:属性名字__比较运算符=值
- 根据条件获取不符合条件的对象的结果集
- get
获取单个对象,不是结果集,范围查询不能使用get
F和Q对象
- filter
- F对象
- F('')引号
原理是:直接执行原生sql语句获取值,可以满足两个属性之间的比较- BookInfo.objects.filter(readcount__gt=F('commentcount'))
- BookInfo.objects.filter(readcount__gt=F('commentcount')*2)
- F('')引号
- Q对象
- Q()
多个过滤器逐个调用- &且
- BookInfo.objects.filter(Q(id__gt=2)&Q(id__lt=5))
- BookInfo.objects.filter(id__gt=2,id__lt=5)
- |或
- BookInfo.objects.filter(Q(id__gt=2)|Q(age__lt=55))
- ~非
- 子主题 1
BookInfo.objects.filter(~Q(id__gt=2))
聚合函数和排序函数
- 子主题 1
- &且
- Q()
- 聚合函数
- aggregate()过滤器调用聚合函数
导入聚合函数:from django.db.models import Sum- Sum
- BookInfo.objects.aggregate(Sum('readcount'))
- 返回值:{‘read__count’:554}
- Sum(' ')
- BookInfo.objects.aggregate(Sum('readcount'))
- Avg
- Count
- 可以直接使用
- BookInfo.objects.count()
- 可以直接使用
- Max
- Min
- Sum
- aggregate()过滤器调用聚合函数
- 排序函数
- order_by(' ')对查询集进行排序
返回的是一个还是一个查询集- BookInfo.objects.all().order_by('readcount')
- BookInfo.objects.filter(id__gt=2).order_by('readcount')
- 降序排序
BookInfo.objects.all().order_by('-readcount')
查询集
- BookInfo.objects.all().order_by('readcount')
- order_by(' ')对查询集进行排序
- filter
- all
- exclude
order_by
关联查询
- 一对多
- 多的一方定义外键
- 由一到多查询
- 多对应的模型类名小写_set
- BookInfo.objects.get(id=1).peopleinfo_set.all()
- 多对应的模型类名小写_set
- 由多到一查询
- 外键
PeopleInfo.objects.get(id=1).book
关联过滤查询
- 外键
- 一对多
- 多模型为条件查一模型数据
- BookInfo.objects.filter(peopleinfo__id=1)
- 一模型作为条件查多模型数据
PeopleInfo.objects.filter(book__id=1)
特点
惰性执行
缓存
限制查询集,切片
- 多模型为条件查一模型数据
BookInfo.objects.all()[0:2]
exists()
判断查询结果中是否有数据,True,False
XMind: ZEN - Trial Version
Django1.11模型类数据库操作的更多相关文章
- java工具类--数据库操作封装类
java对数据库操作简单处理,如下代码即可,封装了 增删改查及获取连接.关闭连接. 代码如下: package com.test; import java.sql.Connection; import ...
- FunDA(11)- 数据库操作的并行运算:Parallel data processing
FunDA最重要的设计目标之一就是能够实现数据库操作的并行运算.我们先重温一下fs2是如何实现并行运算的.我们用interleave.merge.either这几种方式来同时处理两个Stream里的元 ...
- Django-1.11中文文档——操作关联对象
关联对象参考 写在最前面--基础示例模型如下: from django.db import models class Blog(models.Model): name = models.CharFie ...
- vs2017 + Python3.6 +Django1.11 连接mysql数据库
不废话直接来. vs2017创建一个新的python web项目之后默认链接数据库是sqlite.但是我就想连接到Mysql 上面玩,于是开始倒腾了.下面是步骤 1.修改settings.py 文件需 ...
- python3.6+linux服务器+django1.11连接MYSQL数据库
1.django创建一个项目,在项目的settings.py中配置Mysql DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysq ...
- PyCharm中 Django1.11配置Mysql数据库
1.Django 中配置MySQL数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '数据库名称 ...
- django的模型类管理器-----------数据库操作的封装
模型实例方法 str():在将对象转换成字符串时会被调用. save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句. delete():将模型对象从数据表中删除 ...
- 多进程,多线程,使用sqlalchemy 创建引擎(单例模式),闭包装饰器承载数据库会话,装饰模型类的类方法
python 多进程,多线程,使用 sqlalchemy 对数据库进行操作 创建引擎 & 获取数据库会话: 使用类的方式,然后在对象方法中去创建数据库引擎(使用单例,确保只创建一个对象,方法里 ...
- Django框架(七):模型(三) 关联、模型类的属性
1. 关联 1.1 模型类关系 关系型数据库的关系包括三种类型: ForeignKey:一对多,将字段定义在多的一端中. ManyToManyField:多对多,将字段定义在任意一端中. OneToO ...
随机推荐
- Jmeter安装插件Stepping Thread Group
下载链接:https://jmeter-plugins.org/downloads/old/ 下载解压后,将JMeterPlugins-Standard.jar包放在jmeter安装目录的jmeter ...
- STM32中ARM系列编译工具链的编译宏选择(__CC_ARM、__ICCARM__、__GNUC__、__TASKING__)
一 前言 stm32 f103中.关系到一个选择何种编译宏的问题.这里就梳理一下吧. 二 正文 1 在 core_cm3.h 文件中,有如下代码: #if defined ( __CC_ARM ) ...
- 第三篇:Vue指令
Vue指令 1.文本指令相关 v-*是Vue指令,会被vue解析,v-text="num"中的num是变量(指令是有限的,不可以自定义) v-text是原样输出渲染内容,渲染控制的 ...
- 103-PHP定义一个类
<?php class ren{ //定义人类 } class mao{ //定义猫类 } new ren(); //实例化人类 new mao(); //实例化猫类 new mao(); // ...
- 《新标准C++程序设计》3.8(C++学习笔记10)
友元 友元分为友元函数和友元类两种. 一.友元函数 在定义一个类的时候,可以把一些函数(包括全局函数和其它类的成员函数)声明为“友元”,这样那些函数就成为该类的友元函数,在友元函数内部就可以访问该类对 ...
- VUE3.x 前瞻
文档: API Reference 教程 课件 1. 初始化项目 // ① npm i -g @vue/cli // ② vue create my-project // ③ npm install ...
- Python MongoDB 创建集合
章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...
- Bulma CSS - 响应式
Bulma CSS框架教程 Bulma CSS – 简介 Bulma CSS – 开始 Bulma CSS – CSS类 Bulma CSS – 模块化 Bulma CSS – 响应式 Bulma是一 ...
- Linux_Program 前台后台 切换 查看 kill 实用 mark
有时当我们在linux 上 输入 yum repolist 或 curl www.XXX. 时程序由已 :Intel或system 原因 按下 ctrl+z .在Linux终端运行命令的 ...
- tx2系统备份与恢复
https://blog.csdn.net/ycy_dy/article/details/80493392 https://blog.csdn.net/piaopiaopiaopiaopiao/art ...