第五章、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之模型层---单表操作的更多相关文章

  1. 05 Django之模型层---单表操作

    一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...

  2. Django之模型层-单表操作

    单表操作 添加记录 方式1 # 先实例化models中的对象,按照定义的语句规则传入参数,然后使用对象调用save()保存到数据库 book_obj = Book(id=1,title='python ...

  3. Django之模型层:表操作

    目录 Django之模型层:表操作 一.ORM简介 django测试环境搭建 Django终端打印SQL语句 二 单表操作 2.1 按步骤创建表 2.2记录 三.多表操作 1 创建模型 2 添加.删除 ...

  4. Django模型层-单表操作

    ORM介绍 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...

  5. Django基础(3)----模型层-单表操作,多表创建

    昨日内容回顾: 1. {% include '' %} 2. extend base.html: <html> ..... ..... ..... {% block content%} { ...

  6. Django-5.1 模型层 单表操作

    7.1 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开 ...

  7. python 全栈开发,Day71(模型层-单表操作)

    昨日内容回顾 1. {% include '' %} 2. extend base.html: <html> ..... ..... ..... {% block content%} {% ...

  8. Django之模型---ORM 单表操作

    以上一随笔中创建的book表为例讲解单表操作 添加表记录 方式一 # create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象 book_obj=Book.o ...

  9. 06 Django之模型层---多表操作

    一 创建模型 表和表之间的关系 一对一.多对一.多对多 ,用book表和publish表自己来想想关系,想想里面的操作,加外键约束和不加外键约束的区别,一对一的外键约束是在一对多的约束上加上唯一约束. ...

随机推荐

  1. Delphi 中自定义异常及异常处理的一般方法

    delphi中异常定义如下: TCustomException   =   class(Exception)     private     public         constructor   ...

  2. Visual Studio Code 调试 SpringBoot

    Build Anything with Spring Boot:Spring Boot is the starting point for building all Spring-based appl ...

  3. 我是如何提高工作效率的-工具篇(二)-listary

    痛点: 还在为不能闪电速度搜索全盘文件.程序.无缝切换程序烦恼吗? 效果图: 功能1:搜索 各种文件.支持模糊搜索.全拼.文字首字母等模糊查询方式. (功能强大.尽情探索!)   痛点:文件好多啊,可 ...

  4. 【ARM-Linux开发】打包解包命令

    tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip ...

  5. 洛谷 题解 P3942 【将军令】

    本题算法:贪心+排序+搜索+并查集+图论 输入中的t可以不用管,毕竟这只是特殊情况的标志 题目中虽然没有很明确地说明这是一棵树,但是题目中说有n个点,但是只有n-1条边,想用这n-1条边把整个图连通起 ...

  6. win10配置Keras及GPU环境

    今天搭建了Keras深度学习的环境 详细记录一下 安装Anaconda3 Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项. Anac ...

  7. poj2253(floyd变形)

    题目链接:https://vjudge.net/problem/POJ-2253 题意:给出n个点的坐标,求点1到点2的forg distance,其定义为点1到点2的所有路径中最长边的最小值. 思路 ...

  8. redis通用命令

    1.keys pattern 含义:查找所有符合给定模式(pattern)的key keys * 遍历所有key keys he[h-l]* 遍历以he开头,第三个字符为h-l之间的所有key key ...

  9. 洛谷 P4198 楼房重建 线段树维护单调栈

    P4198 楼房重建 题目链接 https://www.luogu.org/problemnew/show/P4198 题目描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上 ...

  10. Dijkstra算法——超~~详细!!

    Dijkstra算法_ ** 时隔多月,我又回来了!**_ 今天下午久违的又学了会儿算法,又重新学习了一遍Dijkstra,这是第三次重新学习Dijkstra(*以前学的都忘完了>_<*) ...