请教Python里的queryset是啥,以及Objects类的用法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教Python里的queryset是啥,以及Objects类的用法?相关的知识,希望对你有一定的参考价值。

几个问题:
1、queryset是什么,经常看到
2、Objects类是什么?经常看到Objects.all()与Objects.get()等,他的父类是什么,有什么用法?
3、做博客的时候,用% for i in list %可以获取一列文章,点击其中一篇,要获得其中一篇文章可以用Objects.get()吗?如不能应该用什么?

这是哪儿的django面试题目或者笔试题目吧,请查看django开发手册。
1.queryset是查询集,就是传到服务器上的url里面的查询内容。Django会对查询返回的结果集QuerySet进行缓存,这是为了提高查询效率。也就是说,在你创建一个QuerySet对象的时候,Django并不会立即向数据库发出查询命令,只有在你需要用到这个QuerySet的时候才会这样做。
2.Objects是django实现的mvc中的m,Django中的模型类都有一个objects对象,它是一个Django中定义的QuerySet类型的对象,它包含了模型对象的实例。
3.不能,因为get可能会有异常,可以用filter函数,如下
>>> Entry.objects.filter(blog__id__exact=1)# 显示的使用__exact
>>> Entry.objects.filter(blog__id=1)# 隐含的使用__exact>>> Entry.objects.filter(blog__pk=1)# __pk 相当于 __id__exact追问

哥,真心不是面试题。
1、查询集是神马,可否给点资料看看
2、为什么get会有异常呢,一般会有什么异常?

试试做BLOG的时候发现很多问题,麻烦帮我看看这个:
http://zhidao.baidu.com/question/491750726.html?quesup2

谢谢!

追答

查询集分两种,一种就是浏览器里输入url,服务器端响应的时候,把url拆成查询集,用字典存get和post的参数和值。还有一种是mvc模式里面,查询结果放在查询集里面,就想像成一张表就行了啊。

参考技术A 好象你这些问题我都研究过。不过真的忘记了。queryset是一个class,在文档里有说明。比如objects.all()返回的就是。不过有时候返回的不是queryset,这是另一个问题了。 queryset里有丰富的信息。除了返回的数据结构外,还可以结合数据字典做成一个可扩展的数据库查询语句。

objects应该是一个静态的类。通常查询一个数据库用all,get,query等方法。为了提高效率可以加一些过滤器,减少查询的数据量,也可以减少重新查询与索引来提高效率。

for in list这个是模板里的语法。list通常可以用objects.get, 或者是query或者是get等获得,也可以自己重新拼装后成生一个list或者是dict之类的东西。

objects.get是可以获得一个文章,这里要做一个异常判断(似乎是要做),如果取不到文章会报异常。pk=...就可以获得一个指定的文章。

通过for i in list中的列表,然后,,再是url通过view传递参数过来,再通过objects.get获取文章内容,通过另一个view和template显示出来。应该就可以了。这些例子代码,有几个教程上有。好象limodou的教程里有。有些老。追问

那请问我该去哪查objects有哪些方法可用呢?

追答

这个问题问得好。通常python都有自省功能。直接用dir(....method or object...)就可以看到。用help(...)也可以看到。 不过就这个问题来说你直接到www.djangoproject.com网站上,它有一个tutor,还有一个库的说明。这个库的说明里有针对objects的说明说明。

我常用的有all, get , filter, query

参考技术B 1:queryset就是查询集,从数据库里获取到对象数据集合.但是有个特点就是它不是直接查询数据的,而是只是定义了一个查询集,在你调用的时候才查询数据库,并且查询同一个查询集后还会自己生成一个缓存,在你以后再次查询同样的查询集会使用缓存的数据,这样节省了查询数据库的资源,有点类似迭代器
2:objects是Django里Manager类管理器为每一个模型定义好的管理器,就和Flask里query查询数据库用到的方法一样,只是把query这个名字改成了objects,这个定义好的名字可以用Manger模型管理器重新定义并改写内部方法!
相当于:

class Objects(models.Model):
objects = ObjectsManager()
如果自己定义的话,只要把Objects改写成你想使用的名字就行,比如query.改写的话根据具体需求自己查查就好了.
3:可以用get方法获取数据,但是get方法在查不到数据的时候会抛出模型类.DoesNotExist异常,所以最好捕获一下异常,如果不用get,那就用filter过滤查询!
参考技术C 你的这些问题有没有去查API啊? 《python322.chm》
class类的使用很方便

显卡设置里的CUDA是啥?

请问显卡设置里的CUDA是什么?它的作用是什么?会影响游戏帧数吗?
别在随便在百度百科那找,我是因为看不懂才请教大侠们的。

CUDA(Compute Unified Device Architecture),通用并行计算架构,是一种运算平台,包含CUDA指令集架构以及GPU内部的并行计算引擎。

只要使用一种类似于C语言的CUDA C语言,就可以开发CUDA程序,从而可以更加方便的利用GPU强大的计算能力,而不是像以前那样先将计算任务包装成图形渲染任务,再交由GPU处理。



CUDA体系结构的组成

开发库:开发库是基于CUDA技术所提供的应用开发库。

运行期环境:运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。

驱动:CUDA-enable的GPU的设备抽象层,提供硬件设备的抽象访问接口。也就是需要安装有nVIDIA硬件的电脑上安装相应的驱动来实现CUDA通用运算。

参考技术A   CUDA(Compute Unified Device Architecture),显卡厂商NVidia推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
  随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA,让显卡可以用于图像计算以外的目的。
  简单来讲,比如通过CUDA架构,视频播放软件可以充分挖掘NVIDIA系列显卡的GPU并行计算能力,轻松进行高清影片的播放,与软件高清解码相比,CPU占用可以下降一半以上。当然,CUDA的应用领域绝不仅仅是视频、图形、游戏,包括各种3D和建模,医疗、能源、科学研究等,到处都可见到这种技术架构的应用。
  支持CUDA的硬件环境需要有NVidia GF8系列及以上型号的显卡,并且安装185版本以上的显卡驱动程序。以QQ影音播放器来讲,要想开启CUDA硬件解码加速,可以打开QQ影音的“播放器设置”,进入“高清加速”面板,在“硬件优化”中选择“自定义优化模式”,然后在“滤镜配置”中的“视频解码器”中自定义选择相应的“QQ CUDA Video Decoder(CUDADecFilter.ax)”即可。而关闭CUDA加速,只需取消选择“QQ CUDA Video Decoder(CUDADecFilter.ax)”,或者切换到“智能高清模式”或“稳定兼容模式”通过这种高清解码定义的开启,并不是说你的画质能够提升多少,而是提升高清视频播放时的流畅以及降低CPU的占用。这个时候,节约下来的CPU空间,可以允许你再去做别的工作,这样就会大大提升你的工作效率,而不至于除了看视频,其他的什么都不能做了。
参考技术B CUDA是NVIDIA的一项GPU技术,实际上是变向实现CPU+GPU并行计算的一种解决方案,主要功能是进行视屏格式的转码,解码之类的工作,因为GPU的运算速度比CPU要快很多,不然游戏中的复杂画面一般CPU是带不动的
比如暴风影音里就支持CUDA的解码输出,这样在看高清时会大大降低CPU使用率,不信你找个1080P的电影44看,一次用CPU解码,一次用GPU的CUDA解码,使用率完全不一样,对游戏帧数没有影响,游戏画面的渲染是靠GPU内核的着色器数量(SP单元)和频率决定本回答被提问者采纳

以上是关于请教Python里的queryset是啥,以及Objects类的用法?的主要内容,如果未能解决你的问题,请参考以下文章

显卡设置里的CUDA是啥?

Python学习---django惰性机制

Mongoengine 中的“QuerySet”对象到底是啥?

PL/SQL 中程序包或者函数处于无效状态是啥原因造成的?请教!!

请教图纸上Voltage Rails是啥意思?

请教网页里的特定数据怎么抓取?