单表操作

-增加,删,改:两种方式:queryset对象的方法,book对象的方法
-改:需要用save()
-get()方法:查询的数据有且只有一条,如果多,少,都抛异常

单表查询

-<1> all(): 查询所有结果
<2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象
<3> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
<4> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象
<5> order_by(*field): 对查询结果排序('-id')
<6> reverse(): 对查询结果反向排序
<8> count(): 返回数据库中匹配查询(QuerySet)的对象数量。
<9> first(): 返回第一条记录
<10> last(): 返回最后一条记录
<11> exists(): 如果QuerySet包含数据,就返回True,否则返回False
<12> values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列 model的实例化对象,而是一个可迭代的字典序列
<13> values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
<14> distinct(): 从返回结果中剔除重复纪录

单表基于双下划线的模糊查询

Book.objects.filter(price__in=[100,200,300])
Book.objects.filter(price__gt100)
Book.objects.filter(price__lt=100)
Book.objects.filter(price__gte=100)
Book.objects.filter(price__lte=100)
Book.objects.filter(price__range=[100,200])
Book.objects.filter(title__contains="python")
Book.objects.filter(title__icontains="python")
Book.objects.filter(title__startswith="py")
Book.objects.filter(pub_date__year=2012)

1 xx 12.3
2 xx 12.3
3 xxx 12.3

  
  import os
  if __name__ == '__main__':
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day81.settings")
import django
django.setup()
from app01 import models
  # 单表的增加两种
# date类型,传的时候,可以传字符串(格式必须是:2018-06-17),可以传时间对象
# ret=models.Book.objects.create(name='洪流吗',price=23.7,publish='北京出版社',pub_data='2018-06-17')
# import datetime
# ctime=datetime.datetime.now()
# ret=models.Book.objects.create(name='西游记',price=45.9,publish='南京出版社',pub_data=ctime)
# 生成对象,再调save方法
# book=models.Book(name='三国演义',price=46.89,publish='南京出版社',pub_data='2017-08-17')
# book.save()
# 删除(pk代指主键)
# ret=models.Book.objects.filter(pk=1).delete()
# book=models.Book.objects.filter(pk=1).first()
# book.delete()
#更新
# ret = models.Book.objects.filter(pk=2).update(name='ddd')
# book=models.Book.objects.filter(pk=2).first()
# book.name='XXX'
# # 没有update这个方法的
# # book.update()
# # 既可以保存,又可以更新
# book.save()
# get方法
# book = models.Book.objects.filter(pk=2).first()
# book拿到的是 book对象
# get查到的数据有且只有一条
# book=models.Book.objects.get(name='XXX')
# book=models.Book.objects.get(name='三国演义')
# print(book.name)
# 查询的api(方法)
# exclude(并列条件必须同时满足,也就是and)
# book=models.Book.objects.exclude(name='三国演义',price=44)
# # 必须是queryset对象才有query,它就是原生的sql
# print(book.query)
# 如何定义一个支持链式操作的类(每个方法返回的时候,返回对象本身)
# 按价格升序排列
# book=models.Book.objects.all().order_by('price')
# 倒序排列
# book = models.Book.objects.all().order_by('-price')
# print(book.query)
# # 必须有排序规则(在order_by之后用)才能调用reverse方法
# book = models.Book.objects.all().order_by('price').reverse()
# book = models.Book.objects.all().reverse()
# print(book.query)
# book=models.Book.objects.all().filter(name='偶露菲').count()
# book=models.Book.objects.all().count()
# book=models.Book.objects.all().first()
# print(book)
# book=models.Book.objects.all().last()
# queryset 可以按索引取值,但是不支持负索引
# 可以支持切片,其实sql就改了
# book = models.Book.objects.all()[10:15]
# book=models.Book.objects.all().filter(name='xx').exists()
# values :返回结果是queryset对象,里面套字典
# book=models.Book.objects.all().values('name')
# for i in book:
# print(i.get('name'))
# print(i['price'])
# values :返回结果是queryset对象,里面套元组
# book=models.Book.objects.all().values_list('name','price')
# book=models.Book.objects.all().values('price').distinct()
# 基于双下划线的模糊查询
# 在列表范围内
# book=models.Book.objects.filter(price__in=[44,45])
# print(book.query)
# 大于
# book = models.Book.objects.filter(price__gt=44)
# 大于等于
# book = models.Book.objects.filter(price__gte=44)
# 小于
# book = models.Book.objects.filter(price__lt=44)
# print(book)
# # 小于等于
# book = models.Book.objects.filter(price__lte=45)
# 在40--50之间
# book=models.Book.objects.filter(price__range=[40,50])
# print(book.query)
# 包含 python
# book = models.Book.objects.filter(name__contains='python')
# 不区分大小写的包含
# book = models.Book.objects.filter(name__icontains='python')
# print(book.query)
# 以XX开通
# book=models.Book.objects.filter(name__istartswith='X')
# print(book.query)
# print(book)
# book=models.Book.objects.filter(name__endswith='义')
# print(book.query)
# book=models.Book.objects.filter(pub_data__year='2017')
# book=models.Book.objects.filter(pub_data__month='01')
# book=models.Book.objects.filter(pub_data__day='11')
book=models.Book.objects.filter(pub_data__year='2017',pub_data__month='08') print(book.query)
print(book)

  TTL

单表操作
-单表的增删改
-单表查询:
-基于双下划线的模糊查询

Python-Django 模型层-单表查询的更多相关文章

  1. Django模型层-单表操作

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

  2. Django 模型层--单表

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

  3. 第五章、Django之模型层----多表查询

    目录 第五章.Django之模型层----多表查询 一.一对多字段增删改查 1.增 2.查 3.改 4. 删除 二.多对多的增删改查 1. 增 2. 改 3. 删 三.ORM跨表查询 四.正反向的概念 ...

  4. 第五章、Django之模型层---单表操作

    目录 第五章.Django之模型层---单表操作 一.ORM查询 二.Django测试环境搭建 三.单表查询 1. 增 2. 改 3. 删 4. 查 第五章.Django之模型层---单表操作 一.O ...

  5. 数据库开发-Django ORM的单表查询

    数据库开发-Django ORM的单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询集 1>.查询集相关概述 查询会返回结果的集,它是django.db.mod ...

  6. python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

    12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefaul ...

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

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

  8. django之orm单表查询

    这几天重新学习了一下django的orm,以此作为记录来分享. Part1:修改配置,生成表 在写数据和查数据之前,首先先得把django配置一下,具体配置如下: 1.先在公共项目的settings中 ...

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

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

随机推荐

  1. 在nginx上用FastCGI解析PHP

    nginx配置文件: Nginx 默认使用  include enable-php.conf;   通过enable-php.conf 来解析PHP,该文件内容如下 location ~ [^/]\. ...

  2. Java BitSet使用场景和示例

    一.什么是BitSet? 注:以下内容来自JDK API: BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个boolean值.用非负的整数将BitSet的位编入索引.可以对每个编 ...

  3. 关于rem布局

    实际UI设计稿给过来为了在手机屏幕上显示清晰,设计稿通常为实际标准手机页面的2倍,一般为640px(以ip5的屏幕尺寸320px设计)或者750px(以ip6的屏幕尺寸为375px设计),这是前提. ...

  4. 虚拟机iso整理

    供个人备用,随缘补充 ubuntu-16.04.6-desktop-amd64.iso 资源: https://pan.baidu.com/s/1ZR_5jgzNsGeOrkE6hAqxEA 提取码: ...

  5. 【XSY3139】预言家 数位DP NFA

    题目描述 有一个定义在 \(\{0,1,2,3,4,5,6,7,8,9\}\) 上的合规表达式,包含三种基本的操作: 结合:\(E_1E_2\) 分配:\((E_1|E_2|\ldots|E_n),n ...

  6. linux下sort命令详解大全

    工作原理: Sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. 第一部分: 1. sort:(不带参数) [rocrocket@ ...

  7. Linux-GitLab安装及汉化

    gitlab 安装及汉化 GitLab简介: GitLab是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的Web服务.可通过Web界面进行访问公开的或者私人项目.它 ...

  8. OO期末总结

    $0 写在前面 善始善终,临近期末,为一学期的收获和努力画一个圆满的句号. $1 测试与正确性论证的比较 $1-0 什么是测试? 测试是使用人工操作或者程序自动运行的方式来检验它是否满足规定的需求或弄 ...

  9. JS学习笔记Day14

    一.正则表达式 (一)正则的概念 1.正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去匹配符合规则的字符 (二)创建正则的方式 1.字面量的 ...

  10. Form -------- 使用

    Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 1.创建Form类 from django.f ...