Python Day74 ORM二

一、查询表记录

1、查询相关API

  现将主要的查询API使用实例介绍如下,其中Student为定义的表类:

(1).Student.objects.all()                                 #返回的QuerySet类型 查询所有记录    [obj1,obj2....]
(2).Student.objects.filter()                              #返回的QuerySet类型 查询所有符合条件的记录
(3).Student.objects.exclude()                             #返回的QuerySet类型 查询所有不符合条件的记录,过滤条件之外的
(4).Student.objects.get()                                 #返回的models对象   查询结果必须有且只有一个,否则报错
(5).Student.objects.all().first()                         #返回的models对象   查询结果集合中的第一个,默认是按照主键进行排序的
(6).Student.objects.filter().last()                       #返回的models对象   查询结果集合中的最后一个,默认是按照主键进行排序的
(7).Student.objects.all().values("name","class_id")     #返回的QuerySet类型  ,列表中存放的字典
(8).Student.objects.all().values_list("name","class_id")  #返回的QuerySet类型  ,列表中存放的元组
(9).Student.objects.all().order_by("class_id")            #按指定字段排序,不指定,按主键排序
(10).Student.objects.all().count()                        #返回的记录个数
(11).Student.objects.all().values("name").distinct()      #返回记录进行去重
(12).Student.objects.all().exist()              #查询结果是否存在,返回True或者False

filter():

  如下例,查询结果为queryset类型,括号内为过滤条件,多个条件为且的关系。

stu_list=Student.objects.filter(name="龙华",class_id=6)

exclude():

  如下例,查询结果为queryset类型,结果为除括号内过滤条件之外的数据。

stu_list=Student.objects.exclude(name="alex")

first():

  如下例,查询结果为models类型,是按照主键排序的方式的第一个结果。

#stu_obj=Student.objects.all().first()
stu_obj=Student.objects.filter(birth__year="2017").first()
print(stu_obj.name)

order_by():

  如下例,查询结果为queryset类型,对查询结果进行排序。

stu_list=Student.objects.all().order_by("-class_id")                            #降序排列
stu_list=Student.objects.all().order_by("-class_id")                            #升序排列

values()与value_list()区别:

ret=Book.objects.values_list("title")                    #values_list("title")前即可加all()也可以加filter()
print(ret)                                               #<QuerySet [(‘王子与青蛙‘,), (‘公主的记忆‘,), (‘爱与恨‘,)]>
ret=Book.objects.values("title")                         #values"title")前即可加all()也可以加filter()
print(ret)                                               #<QuerySet [{‘title‘: ‘王子与青蛙‘}, {‘title‘: ‘公主的记忆‘}, {‘title‘: ‘爱与恨‘}]>

get():

 过滤条件指向的数据必须有且只有一个记录,否则报错,结果为model类型。
ret=Student.objects.get(class_id="5")
print(ret.name) 

exist():

  当确实有数据存在的时候,如下两种方式均可以执行if语句,但是从执行时翻译成的sql语句,我们就可看出exist存在的意义,他只会查询一条记录,这对数据量很大的表,查询效率是很高的。

#方式一:
stu_list=Student.objects.all().exists()              #翻译的sql语句:SELECT (1) AS "a" FROM "app01_student" LIMIT 1; args=()
if stu_list:
      print("OK")
#方式二:
stu_list=Student.objects.all()                       #翻译的sql语句:SELECT "app01_student"."tid", "app01_student"."name", "app01_student"."birth", "app01_student"."age" FROM "app01_student";
if stu_list:
      print("OK")

2、双下划线单表查询

  具体介绍如下:

时间: 2024-08-11 03:26:03

Python Day74 ORM二的相关文章

Python基础(二)

Python基础(二) Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典.set集合) for 循环 enumrate range和xrange 编码与进制转换 Python 运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.逻辑运算:  5.成员运算: 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483

Python爬虫进阶二之PySpider框架安装配置

关于 首先,在此附上项目的地址,以及官方文档 PySpider 官方文档 安装 1. pip 首先确保你已经安装了pip,若没有安装,请参照 pip安装 2. phantomjs PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速.原生支持各种Web标准:DOM 处理.CSS 选择器.JSON.Canvas 和 SVG. PhantomJS 可以用于页面自动化.网络监测.网页截屏以及无界面测试等. 安装 以上附有官方安

Python之路【第三篇】:Python基础(二)

Python之路[第三篇]:Python基础(二) 内置函数 一 详细见python文档,猛击这里 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 1 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open. 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作.

Python基础之二:数据类型

四.Python数据类型 数字 字符串 列表 元祖 字典 1.数字类型 整型 表示范围:-2147483648到2147483647,超过该范围的会被当作长整型 示例:num=123 type(num)-返回<type 'int'>,用来测试变量的类型 长整型 表示范围:任意大整数,后跟L或l与整型区别 示例:num=1l type(num)-返回<type 'long'> 浮点型 示例:num=12.0 type(num) -返回<type'float'> 复数型 示

学习编程之Python篇(二)

学习编程与学习踢球.学习演奏并无差别,最佳方式就是不断练习,所以我们鼓励你敲些代码,看看会发生什么,如果这些代码头一次不起作用,没关系,再来,看看你能否把它们纠正过来. 首先是一个简单的快速入门程序,让我们通过了解这个程序的细节,来熟悉Python. 第一项任务:给定半径,计算一个圆的周长和面积. 程序分解: 1.  提示用户输入半径: 2.  应用数学公式,根据获得的半径,得出周长和面积: 3.  输出结果. 代码1.1 运行程序的最简单方法是在IDLE编辑器里打开它,然后选择Run->Run

python学习(二)百度爬虫0.1

参照着网上的爬虫案例(点我),先做了一个demo,基本的爬虫项目创建,以及数据抽取,数据分析,数据保存等等过程基本上有所掌握. 我的需求是需要检索指定的百度贴吧,根据指定的关键字库,搜索出含有关键字的链接,并抽取出来,用于后续告警. 因此,基于需求,分如下步骤: 第一:基于Scrapy创建爬虫项目: 第二:新建TieBaSpider爬虫: 第三:新建外部关键字库dictionary.txt文件,贴吧地址配置url.txt文件: 第一步参考晚上案例. 从第二步开始,编写爬虫,同时创建实例对象以及创

Python爬虫实战二之爬取百度贴吧帖子

大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不好使,八成是正则表达式那儿匹配不到了,请更改一下正则,当然最主要的还是帮助大家理解思路. 2016/12/2 本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件 1.URL格式的确定 首先,我们先观察一下百度贴吧的任意一个帖子. 比如:ht

Python服务器开发二:Python网络基础

Python服务器开发二:Python网络基础 网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. HTTP是高层协议,而TCP/IP是个协议集,包过许多的子协议.包括:传输层的 FTP,UDP,TCP协议等,网络层的ip协议等,高层协议如HTTP,telnet协议等,HTTP是TCP/IP的一个子协议. socket是对TCP/IP协议的封装和应用(程序员层面上).也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如

Python文件遍历二种方法

分享下有关Python文件遍历的两种方法,使用的OS模块的os.walk和os.listdir实现. 关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os.listdir()递归遍历.方法一:利用os.walkos.walk可以自顶向下或者自底向上遍历整个文件树,然后返回一个含有3个元素的tuple,(dirpath, dirnames, filenames).注意,os.walk()会返回一个generater,所以调用的时候一定要放到for循环中