第五章、Django之模型层---单表操作
第五章、Django之模型层---单表操作
一、ORM查询
如果你向查看orm语句内部真正的sql语句有两种方式
1.如果是queryset对象 可以直接点query查看
2.配置文件中 直接配置
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True,
'level': 'DEBUG',
},
}}
二、Django测试环境搭建
import os
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "one_search.settings")
import django
django.setup()
# 你就可以在下面测试django任何的py文件
三、单表查询
必知必会13条
神奇的双下划线查询
1. 增
第一种
models.Book.objects.create(title='西游记',price=123.23,publish_date='2019-10-24')
第二种
from datetime import date
ctime = date.today()
book_obj = models.Book(title='三国演义',price=666.66,publish_date=ctime)
book_obj.save()
2. 改
第一种
models.Book.objects.filter(pk=1).update(price=999.66)
第二种
book_obj = models.Book.objects.filter(pk=1).first()
book_obj.title = '不符合社会主义核心价值观'
book_obj.save()
3. 删
models.Book.objects.filter(pk=1).delete()
4. 查
1.all() 查询所有 返回QuerySet
# res = models.Book.objects.all() # 惰性查询
# print(res)
# for i in res:
# print(i.title)
# 2.filter() 返回QuerySet
# res = models.Book.objects.filter(pk=2)
# print(res)
# 3.get() 数据对象本身
# 4.first() 拿第一个
# res = models.Book.objects.all()
# print(res)
# print(res.first())
#5. last() 拿最后一个
# res = models.Book.objects.all()
# print(res)
# print(res.last())
# 6.exclude 除此之外 QuerySet
# res = models.Book.objects.exclude(pk=3).filter(pk=4).filter(pk=1).filter(pk=4)
# # # <QuerySet []>
# # print(res)
# 7.values QuerySet 列表套字典
# res = models.Book.objects.values('title')
# for r in res:
# print(r.get('title'))
# 8.values_list QuerySet 列表套元组
# res = models.Book.objects.values_list('title')
# print(res)
# 9.count() 统计数据的个数
# res = models.Book.objects.count()
# res1 = models.Book.objects.all().count()
# print(res,res1)
# 10.distinct() 去重
"""去重:数据必须是一模一样的情况下才能去重"""
# res = models.Book.objects.all().distinct()
# res1 = models.Book.objects.values('title','price').distinct()
# print(res1)
# 11.order_by()
# res = models.Book.objects.order_by('price') # 默认是升序
# # res1 = models.Book.objects.order_by('-price') # 加负号就是降序
# print(res)
# 12.reverse() 前面必须是先结果排序才可以反转
# res = models.Book.objects.order_by('price').reverse()
# print(res)
# 13.exists() 一点卵用没有
# res = models.Book.objects.filter(pk=1).exists()
# print(res)
神奇的双下线查询
# 查询价格大于200的书籍
# res = models.Book.objects.filter(price__gt=200)
# 查询价格小于200的书籍
# res = models.Book.objects.filter(price__lt=200)
# print(res)
# 查询价格大于或者等于200的书籍
# res = models.Book.objects.filter(price__gte=200)
# res1 = models.Book.objects.filter(price__lte=200)
# print(res,res1)
# 价格是200 或者是123.23 或者666.66
# res = models.Book.objects.filter(price__in=[200,123.23,666.66])
# print(res)
# 价格在200 到700之间的书籍
# res = models.Book.objects.filter(price__range=(200,666.66)) # 顾头不顾尾
# print(res)
模糊匹配
"""
like
%
_
"""
# 查询书籍名称中包含p的
# res = models.Book.objects.filter(title__contains='p') # 区分大小写
# print(res)
# 忽略大小写
# res = models.Book.objects.filter(title__icontains='p') # 忽略大小写
# print(res)
# 查询书籍名称是以三开头的书籍
# res = models.Book.objects.filter(title__startswith='三')
# res1 = models.Book.objects.filter(title__endswith='P')
# print(res1)
# 查询出版日期是2019年的书籍
# res = models.Book.objects.filter(publish_date__year='2019')
# 查询出版日期是10月的书籍
# res = models.Book.objects.filter(publish_date__month='10')
第五章、Django之模型层---单表操作的更多相关文章
- 05 Django之模型层---单表操作
一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...
- Django之模型层-单表操作
单表操作 添加记录 方式1 # 先实例化models中的对象,按照定义的语句规则传入参数,然后使用对象调用save()保存到数据库 book_obj = Book(id=1,title='python ...
- 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 ...
- 06 Django之模型层---多表操作
一 创建模型 表和表之间的关系 一对一.多对一.多对多 ,用book表和publish表自己来想想关系,想想里面的操作,加外键约束和不加外键约束的区别,一对一的外键约束是在一对多的约束上加上唯一约束. ...
随机推荐
- mybatis plus foreach 的用法
一: foreach 用于 select * from tablename where colname in (A,B,C……); 1:service 层: Set<String> tea ...
- CentOS下Hadoop及ZooKeeper环境搭建
1. 测试环境 操作系统 CentOS 6.5. 总共5台机器,前两台作为namenode,称之为 nn01.nn02:后三台作为datanode,称为 dn01.dn02.dn03. 每台机器的内存 ...
- 最新 波克城市java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.波克城市等10家互联网公司的校招Offer,因为某些自身原因最终选择了波克城市.6.7月主要是做系统复习.项目复盘.Leet ...
- 最新 拼多多java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.拼多多等10家互联网公司的校招Offer,因为某些自身原因最终选择了拼多多.6.7月主要是做系统复习.项目复盘.LeetCo ...
- MySQL索引解析(联合索引/最左前缀/覆盖索引/索引下推)
本节内容: 1)索引基础 2)索引类型(Hash索引.有序数组.B+树) 3)索引的几个常见问题 1)联合索引 2)最左前缀原则 3)覆盖索引 4)索引下推 1. 索引基础 索引对查询的速度有着至关重 ...
- Java Netty和Android之WebSocket,Springboot和Vue项目网址
在Netty上使用Websocket和网页上写个简单的websocket https://www.cnblogs.com/amibandoufu/p/11442881.html Android上使用w ...
- 前端入门系列之HTML
前端入门系列之HTML 超文本标记语言 (英语:Hypertext Markup Language,简称:HTML ) 是一种用来结构化 Web 网页及其内容的标记语言.网页内容可以是:一组段落.一个 ...
- Linux下安装xrdp
ubuntu 打开终端,依次输入如下命令: sudo apt-get install xrdp sudo apt-get install vnc4server tightvncserver cd /h ...
- Linux Shell中的变量声明和一些特殊变量
在SHELL中定义变量比较直接,无类型区别,不需要像Java那样定义好是String还是int等. 声明变量需要遵守或者注意的几点: 变量名和等号之间不能有空格. 变量名首字符必须为字母. 变量名里可 ...
- AC自动机fail树上dfs序建线段树+动态memset清空
题意:http://acm.hdu.edu.cn/showproblem.php?pid=4117 思路:https://blog.csdn.net/u013306830/article/detail ...