Django之模型层-单表操作
单表操作
添加记录
方式1
# 先实例化models中的对象,按照定义的语句规则传入参数,然后使用对象调用save()保存到数据库
book_obj = Book(id=1,title='python',price=99.9,pub_date='2018-12-9',publish='人民币出版社')
book_obj.save()
方式2 create是有返回值的,返回值是当前生成的记录,使用.可以进行调用
# 不需要使用save()进行保存,自动保存
book_obj = Book.objects.create(title='liunx',price=22.9,pub_date='2018-12-9',publish='人民币出版社')
print(book_obj.title)
print(book_obj.pub_date)
单表查询API
all():查询所有,返回值是QuerySet,支持for循环以及切片操作
book_list = Book.objects.all()
for i in book_list:
print(i.title)
first(),last():第一个和最后一个。调用者是Query对象,返回的是一个模型对象
book = Book.objects.all().first()
filter() 过滤,对应sql语句的where。调用者是objects,返回值是QuerySet。可以多个查询条件,传入参数的时候以, 隔开
book = Book.objects.filter(id=1)
print(book[0].title)
get()与filter方法类似,有且只有一个查询结果时才有意义,假如说查询结果是多个对象会保存或者没有查询到结果时也会保存,调用者是objects,返回值是一个model对象
book = Book.objects.get(id=1)
print(book.title)
exclude()排除,与filter相反。调用者是objects,返回值是QuerySet。
# 除了python等于python的都找出来
book = Book.objects.exclude(title='python')
print(book[1].title)
order_by()排序,调用者是QuerySet,返回值是QuerySet,默认是升序,在字段前加上 - 是倒叙。可以传入多个排序字段,如果第一个相等的情况下,会对第二个参数进行判断排序。
book = Book.objects.all().order_by('id')
# book = Book.objects.all().order_by('-id') 倒叙排序
print(book)
reverse():对查询结果反向排序,调用者是QuerySet
count():调用者是QuerySet,返回值是数字类型
book = Book.objects.all().count()
print(book)
exists():判断QuerySet是否有值,调用者这是QuerySet,返回值是bool
book = Book.objects.all().exists()
print(book)# True
values()内部去循环一个QuerySet,返回一个QuerySet,返回值是一个列表嵌套字典,键是传入values的值,值是查询出来的值
values()内部实现原理
def values(val):
tmp = []
for obj in Book.objects.all():
tmp.append({
'id':obj.id
})
return tmp
values('id')
values()的调用者可以是一个QuerySet也可以是一个objects
book = Book.objects.all().values('id','price')
# <QuerySet [{'id': 1, 'price': Decimal('99.90')}, {'id': 2, 'price': Decimal('22.90')}, {'id': 3, 'price': Decimal('2000.90')}]>
print(book)
# book = Book.objects.values('id','price')
values_list():调用者是QuerySet对象,返回值是QuerySet(一个列表中嵌套查询出来的值放在元组内)
book = Book.objects.all().values_list('id')
print(book)
# <QuerySet [('python',), ('liunx',), ('射雕英雄传',)]>
distinct():从返回结果中剔除重复的记录。调用者是QuerySet,返回值是QuerySet。all()后面调用distinct()是没有意义的,可以用在固定查询某个字段的时候使用
book = Book.objects.all().values('price').distinct()
print(book)
单表查询之模糊查询
# 大于:__gt
ret = Book.objects.filter(price__gt=10)
# 小于:__lt
ret = Book.objects.filter(price__lt=10)
# 以什么什么开头:__startswith
ret = Book.object.filter(price__startswith)
# 只要有什么就查询出来__contains
ret = Book.objects.filter(title__contains='h')
# 与上面类似,不区分大小写:__icontains
ret = Book.objects.filter(title__icontains='h')
# 只要在字段在列表内:__in
ret = Book.objects.filter(title__in=['python','liunx'])
# 在某某之间:__range
ret = Book.objects.filter(price_range=[1,200])
# 查询年月日:__year,__month,__day(必须是Date才能调用)
ret = Book.objects.filter(pub_date__year=2018)
单表操作之修改与删除
先查询出需要进行删除修改的数据,然后调用相应的方法
删除:delete()调用者是QuerySet对象与model对象返回值是删除的记录数量
book = Book.objects.filter(title='liunx').delete()
修改:update()调用者必须是QuerySet
Django之模型层-单表操作的更多相关文章
- 第五章、Django之模型层---单表操作
目录 第五章.Django之模型层---单表操作 一.ORM查询 二.Django测试环境搭建 三.单表查询 1. 增 2. 改 3. 删 4. 查 第五章.Django之模型层---单表操作 一.O ...
- 05 Django之模型层---单表操作
一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...
- Django之模型层:表操作
目录 Django之模型层:表操作 一.ORM简介 django测试环境搭建 Django终端打印SQL语句 二 单表操作 2.1 按步骤创建表 2.2记录 三.多表操作 1 创建模型 2 添加.删除 ...
- Django模型层-单表操作
ORM介绍 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...
- Django基础(3)----模型层-单表操作,多表创建
昨日内容回顾: 1. {% include '' %} 2. extend base.html: <html> ..... ..... ..... {% block content%} { ...
- Django-5.1 模型层 单表操作
7.1 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开 ...
- python 全栈开发,Day71(模型层-单表操作)
昨日内容回顾 1. {% include '' %} 2. extend base.html: <html> ..... ..... ..... {% block content%} {% ...
- Django之模型---ORM 单表操作
以上一随笔中创建的book表为例讲解单表操作 添加表记录 方式一 # create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象 book_obj=Book.o ...
- Django之模型层-多表操作
多表操作 数据库表关系 一对多:两个表之间的关系一旦确定为一对多,必须在数据多的表中创建关联字段 多对多:两个表之间的关系一定确定为多对多,必须创建第三张表(关联表) 一对一:一旦两个表之间的关系确定 ...
随机推荐
- centos命令行系列之centos查看磁盘空间大小
df -h 扩展: 1.查看当前文件夹所有文件大小 du -sh 2.查看指定文件下所有文件大小 du -h /data/ 3.查看指定文件大小 du -h install.log 4.查指定文件夹大 ...
- 【Python】基础知识
一.基本概念 1.变量与运算符 Python允许给多个变量同时赋值,等号 (=) 右边的值将赋予左边对应位置的变量. # 将a, b, c的值依次赋予b, c, a b, c, a = a, b, c ...
- Utils--字符串的帮助类
Utils--字符串的帮助类 一个关于字符串过滤的工具类,主要时针对username和password的过滤 package com.bw.yun.utils; import java.securit ...
- 【转】SQLServer汉字转全拼音函数
USE Test go IF OBJECT_ID('Fn_GetQuanPin','Fn') IS NOT NULL DROP FUNCTION fn_GetQuanPin go create fun ...
- Kali安装教程(VMWare)
1.下载镜像及相关 1.1下载镜像文件 下载链接:https://www.kali.org/downloads/ 选择自己需要的版本下载,根据经验先下载种子文件(torrent)再用迅雷下载网速是最有 ...
- vue 给 图片添加一个默认图片
<img v-bind:src="userData.photo" :onerror="logo" class="img-box4"&g ...
- 自定义xadmin后台首页
登陆xadmin后台,首页默认是空白,可以自己添加小组件,xadmin一切都是那么美好,但是添加小组件遇到了个大坑,快整了2个礼拜,最终实现想要的界面.初始的页面如图: 本机后台显示这个页面正常,do ...
- Python3 线程/进程池 concurrent.futures
python3之concurrent.futures一个多线程多进程的直接对接模块,python3.2有线程池了 Python标准库为我们提供了threading和multiprocessing模块编 ...
- Win10访问不到XP共享的解决:
不知道别人的是怎么解决. 反正我这么解决了. 我的win10笔记本,是使用windows帐户登陆的.可以同步很多东西. 同事的电脑是台式老古董XP. 扫描不到网上邻居,手动\\ip也访问不到. 最后安 ...
- java -jar 使用要点
1.在将进程设为脱离终端运行时,输出流不能输出到当前窗口.否则,退出终端后,进程会pause.pause是停滞,是僵尸进程. 2.包含资源文件的war.jar文件是无法独立运行的.需要解压到临时目录. ...