第五章、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. mybatis plus foreach 的用法

    一: foreach 用于 select * from tablename where colname in (A,B,C……); 1:service 层: Set<String> tea ...

  2. CentOS下Hadoop及ZooKeeper环境搭建

    1. 测试环境 操作系统 CentOS 6.5. 总共5台机器,前两台作为namenode,称之为 nn01.nn02:后三台作为datanode,称为 dn01.dn02.dn03. 每台机器的内存 ...

  3. 最新 波克城市java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.波克城市等10家互联网公司的校招Offer,因为某些自身原因最终选择了波克城市.6.7月主要是做系统复习.项目复盘.Leet ...

  4. 最新 拼多多java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.拼多多等10家互联网公司的校招Offer,因为某些自身原因最终选择了拼多多.6.7月主要是做系统复习.项目复盘.LeetCo ...

  5. MySQL索引解析(联合索引/最左前缀/覆盖索引/索引下推)

    本节内容: 1)索引基础 2)索引类型(Hash索引.有序数组.B+树) 3)索引的几个常见问题 1)联合索引 2)最左前缀原则 3)覆盖索引 4)索引下推 1. 索引基础 索引对查询的速度有着至关重 ...

  6. Java Netty和Android之WebSocket,Springboot和Vue项目网址

    在Netty上使用Websocket和网页上写个简单的websocket https://www.cnblogs.com/amibandoufu/p/11442881.html Android上使用w ...

  7. 前端入门系列之HTML

    前端入门系列之HTML 超文本标记语言 (英语:Hypertext Markup Language,简称:HTML ) 是一种用来结构化 Web 网页及其内容的标记语言.网页内容可以是:一组段落.一个 ...

  8. Linux下安装xrdp

    ubuntu 打开终端,依次输入如下命令: sudo apt-get install xrdp sudo apt-get install vnc4server tightvncserver cd /h ...

  9. Linux Shell中的变量声明和一些特殊变量

    在SHELL中定义变量比较直接,无类型区别,不需要像Java那样定义好是String还是int等. 声明变量需要遵守或者注意的几点: 变量名和等号之间不能有空格. 变量名首字符必须为字母. 变量名里可 ...

  10. AC自动机fail树上dfs序建线段树+动态memset清空

    题意:http://acm.hdu.edu.cn/showproblem.php?pid=4117 思路:https://blog.csdn.net/u013306830/article/detail ...