django中怎么进行数据查询(django 或查询)

作者&投稿:直坚 (若有异议请与网页底部的电邮联系)
~

今天给各位分享django中怎么进行数据查询的知识,其中也会对django 或查询进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、django中怎么使用两个限定条件在mysql数据库中进行查询2、Django 中使用model 怎么查询不等于某个值的情况3、django数据表如何多条件查询4、python django 怎么把数据查询结果保存到一个list里面5、django rest framework接口怎么传参进行数据查询?6、Django如何进行数据访问查询django中怎么使用两个限定条件在mysql数据库中进行查询

可以使用逻辑关系运算符

例如:

SELECT * FROM table_name

WHERE (条件1 and 条件2) 查询两个条件都符合的结果,

或者

SELECT * FROM table_name

WHERE (条件1 or 条件2) 查询符合两个条件中满足任一条件的结果。

Django 中使用model 怎么查询不等于某个值的情况

Model是django项目的基础, 如果一开始没有好好设计好, 那么在接下来的开发过程中就会遇到更多的问题. 然而, 大多数的开发人员都容易在缺少思考 的情况下随意的增加或修改model. 这样做的后果就是, 在接下来的开发过程中, 我们不得不做出更多努力来修正这些错误.

因此, 在修改model时, 一定尽可能的经过充分的考虑再行动! 以下列出的是我们经常用到的一些工具和技巧:

South, 用于数据迁移, 我们会在每个django项目中都用到. 但到django 1.7时, 将会有django.db.migrations代替.

django-model-utils, 用于处理常见的模式, 例如TimeStampedModel.

django-extensions, 主要用到shell_plus命令, 该命令会在shell中自动载入所有的app的model

1. 基本原则

第一, 将model分布于不同的app中. 如果你的django项目中, 有一个app拥有超过20个model, 那么, 你就应当考虑分拆该app了. 我们推荐每个app拥 有不超过5个model.

第二, 尽量使用ORM. 我们需要的大多数数据库索引都能通过Object-Relational-Model实现, 且ORM带给我们许多快捷方式, 例如生成SQL语句, 读取/更新数据库时的安全验证. 因此, 如果能使用简单的ORM语句完成的, 应当尽量使用ORM. 只有当纯SQL语句极大地简化了ORM语句时, 才使用纯SQL语句. 并且, 在写纯SQL语句是, 应当优先考虑使用raw(), 再是extra().

第三, 必要时添加index. 添加db_index=True到model中非常简单, 但难的是理解何时应该添加. 在建立model时, 我们事先不会添加index, 只有当 以下情况时, 才会考虑添加index:

在所有的数据库查询中使用率在10%-25%时

或当有真实的数据, 或能正确估计出使用index后的效果确实满意时

第四, 注意model的继承. model的继承在django中需要十分小心, django提供了三种继承方式, 1.abstract base class继承(不要和Pyhton标准库的abc模块 搞混), 2.多表(multi-table)继承, 3.proxy model继承. 下表罗列了这三种继承的优劣:

django的创造者和其他许多开发人员都认为, 多表继承的方法不是一个良好的方法. 因此我们强烈建议大家不要使用该方法. 下面列举了一些常见的如何 选择model继承的情形:

如果只有少数model拥有重复的field时, 大可不必使用model继承, 只需要在每个model中添加这些相同的field即可.

如果有足够的model拥有重复的field时, 大多是情况下, 可以使用abstract base class继承, 将相同的field提取到abstract base class 中.

Proxy model继承很少被用到, 和其他两种继承也有着许多不一样之处.

请不要使用多表(multi-table)继承, 因为它既消耗资源又复杂, 如果可以, 尽量使用OneToOneFields和ForeignKeys代替.

django项目中, 创建时间和修改时间这两个field是最用到的, 下面给出一个abstract base class继承的例子:

2. Django Model的设计

如何设计出好的django model可能是最难也是最复杂的一个话题了, 在此, 我们看看一些基本的技巧吧:

a. 规范化

我们首先建议了解数据库规范化(database normalization). 如果你还不清楚这是什么, 那么, 我们强烈建议你先阅读一下相关的书籍, 或搜索"关系 型数据库设计"或"数据库规范化". 在创建django model之前, 应当首先保证设计的数据库是规范化的.

b. cache

正确的使用cache能帮助我们提高数据库的性能. 详细的信息, 我们会在今后的文章中作进一步介绍.

c. 何时使用null和blank

当定义model field时, 我们可以设置null=True和blank=True (默认都是False), 知道何时设置null和blank对于开发人员也是十分重要的, 在下 面的表格中, 我们一一列举了如何使用这两个选项:

d. 什么时候使用BinaryField

在django 1.6中, 新增了BinaryField, 用于储存二进制数据(binary data或 bytes). 对于BinaryField, 我们无法使用ORM的filters, excludes或其他SQL操作. 但在少数情况下, 我们会用到BinaryField, 例如MessagePack格式的内容, 传感器接受的原始数据和压缩数据等. 但需要注意 的是, Binary Data一般都十分庞大, 因此可能会拖慢数据库的速度. 如果发生这一现象, 我们可以将binary data储存在文件中, 然后使用FileField储 存该文件的路径信息.

还有, 不要从BinaryField中直接读取文件并呈献给用户. 因为, 1. 从数据库读写总是比从文件系统读写慢; 2. 数据库备份会变得十分庞大, 花费更多 的时间; 3. 获得文件的过程, 增加了从django到数据库的这一环节.

3. 不要替换默认的Model Manager

从ORM获取model, 实际上是通过django中的Model manager完成的, django为每一个model提供了默认的model manager, 我们不建议将其替换掉, 因为:

当使用model继承时, model会继承 abstract base class model的model manager, 而不会继承非abstract base class的manager.

model的第一个model manager通常作为默认的manager, 当被替换时, 可能会发生不可预测的问题.

4. 数据库事务 (Transaction)

在django 1.6中, ORM默认会autocommit每一个数据库查询, 也就是说, 每次使用m.create()或m.update()时, 在数据库中马上就会做出相应的修 改. 这样做的好处就是简化了初学者对ORM的理解. 但坏处就是, 当一个view中包含两个数据库修改, 可能一个成功, 但另一个失败, 这就可能导致数据库不 完整, 给我们带来很大的危险.

解决这一问题的方法就是使用数据库transaction, 即将一系列数据库操作包含在一个transaction中, 当其中有一个失败时, 其他操作也会自动回退. Django 1.6 为我们带来了一套崭新的既简单又强大的transaction机制, 使我们方便的使用数据库transaction.

a. 将整个http request包裹在transaction中

django给我们提供了一个简单地方法, 将一个http request中的所有数据库操作包裹在transaction中:

只需要在数据库设置中加入'ATOMIC_REQUESTS': True选项, 就能将整个http request包裹在transaction中. 这样做的好处显而易见是是安全, 但 坏处则是性能可能会下降, 因此随着流量的增大, 我们必须采取更针对性的transaction. 其次, 需要注意的是, 回退的只是数据库的状态, 而不包括其他费 数据库项, 例如发送email等. 所以当涉及这些非数据库项时, 我们应当使用transaction.con_atomic_request()修饰(decorate)这些view:

b. 更明确地transaction控制

更明确地transaction控制意味着提高真题web app的性能, 但也意味着更多的开发时间. 大多数网站下, 由于有限的流量, 使用ATOMIC_REQUESTS已 经足够. 在使用手动transaction控制时, 应当注意:

不做数据修改的操作, 应当排除在transaction之外

做数据修改的操作, 则应在transaction内

特殊情况下, 可以违反以上两条

需要注意的是, 当view返回的是django.http.StreamingHttpResponse时, 应当设置ATOMIC_REQUESTS为false, 或使用 transaction.non_atomic_requests将该view修饰. 因为对于view本身, 是可以使用transaction的, 但对于之后生成的response stream触发的额 外SQL查询, 会自动变为django默认的autocommit模式.

django数据表如何多条件查询

Students="你定义的 Models "

Students.objects.filter(name='张三').filter(num='123')

python django 怎么把数据查询结果保存到一个list里面

1、新建一个JUPYTER NOTEBOOK文档。

2、定义一个LIST列表并且打印看看结果。list = [3, 9, -7] print(list)。

3、为列表增加一个数字。list.append(10) print(list)。

4、字符串也是可以增加进去的。 list.append("string 123") print(list)。

5、列表里面更是可以含有其它列表。list.append([-3, -4]) print(list)。

6、如果要删除最后一个列表的值,可以这样处理。list.pop() print(list)。

django rest framework接口怎么传参进行数据查询?

webservice其实就是web api,不过为了便于统一使用了通用的数据格式,比如xml。所以你完全可以自己使用一个第三方xml库来自己构建这样的环境,或者使用djangorestframework这样的第三方app来直接帮你快速开发

Django如何进行数据访问查询

from jobs.models import Job

from datetime import datetime

q3 = Job.objects.filter(pub_date__gte=datetime(2006, 1, 1))

q4 = q3.filter(location__city__exact="Cleveland",

...location__state__exact="Ohio")

django中怎么进行数据查询的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于django 或查询、django中怎么进行数据查询的信息别忘了在本站进行查找喔。




圣斗士星矢简介
当哈迪斯正要动手杀死魔罐中的纱织时,紫龙、冰河和瞬赶到。五个少年圣斗士同心协力,用他们的生命和小宇宙,一起向哈迪斯发出攻击。哈迪斯挥舞宝剑,神勇无敌,少年圣斗士们渐渐难以招架。而且,哈迪斯制造的九星连珠现象开始出现,大地进入黑暗中。身上多处受伤的星矢,把雅典娜圣衣交给纱织,纱织苏醒了,穿...

富民县13666039977: Django 数据库查询语句 -
屠静间苯: 很简单的 Result.objects.all() 不是一个list,官方的说法是 QuerySet 你可以这么做:for entry in Result.objects.all(): if a in entry.link: print entry 当然这样会查询整个表,太慢,直接用Django 提供的QuerySet API就好了,一下子找出所有的含有 a ...

富民县13666039977: django中怎么使用两个限定条件在mysql数据库中进行查询 -
屠静间苯: 可以使用逻辑关系运算符 例如:SELECT * FROM table_name WHERE (条件1 and 条件2) 查询两个条件都符合的结果, 或者 SELECT * FROM table_name WHERE (条件1 or 条件2) 查询符合两个条件中满足任一条件的结果.

富民县13666039977: django数据库查询操作 -
屠静间苯: 1.get(**kwargs)解2113释:返回与筛选条件相匹配的Model对象,返回结果有5261且只有一个.说明:如4102果符合条件的对象多1653于一个抛出MultipleObjectsReturned异常回,如果没有答找到抛出DoesNotExist异常语法:ModelName.objects.get(itemName=itemNameValue)例子:Author.objects.get(id=1)

富民县13666039977: python + django 多表联合查询方法求教 -
屠静间苯: 直接用select搞定.用它的自带的model,可以借助它的admin模块,形成自动数据管理. 不过大部分情况下,自己做查询语句,开发速度要快很多. 后期再慢慢改吧.另外它的model也直接直接写select语句. 你仔细研究一下,它的model里有说明表之间的依赖关系的.只需要指定你要关联的字段的对象,是另外一个MODEL里的对象就可以.不要做复杂的多表联合查询.复杂的表,说明你的表设计的不合理.通常2-3张表简单的关联查询就足够了. 如果表格真的太复杂,可以通过视图或者是存贮过程解决.映射到django里,就变得简单了.

富民县13666039977: python django查询mysql表字段的最大值 -
屠静间苯: 如果你的表是用模型建立的话,类似这样class Person(models.Model): qq=models.CharField(max_length=100)要取Person模型中的id最大值的话,可以使用a=Person.objects.late...

富民县13666039977: django连接已有 mysql -
屠静间苯: 在settings中配置mysql库的内容 1 2 3 4 5 6 7 8 9 10DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'djplatform','USER':'root','PASSWORD':'111111','HOST':'localhost','PORT':'3306',} }如果已有数据表,但...

富民县13666039977: Django/Python如何显示数据库中的内容到页面上, -
屠静间苯: 首先你要知道如何在视图里渲染模板,另外得要看你用的是什么数据库,以及你是否使用django的orm.拿mysql为例,如果你只需要从现有数据库中查询数据并显示,那么使用MySQLdb模块即可,查询出来的数据和模板进行渲染,之后返回渲染后的模板对象即可.

富民县13666039977: Django输入查找数据库中不存在的数据时,页面会报错 -
屠静间苯: get方法在查询的时候,如果没有匹配结果或者匹配结果超过1个,就会弹出这个错误.所以,你要用try....except机制处理异常,或者使用get_or_404()..参考Django数据库查询操作

富民县13666039977: python django在前端怎么遍历得到字典的value -
屠静间苯: 这是哪儿的django面试题目或者笔试题目吧,请查看django开发手册. 1.queryset是查询集,就是传到服务器上的url里面的查询内容.Django会对查询返回的结果集QuerySet进行缓存,这是为了提高查询效率.也就是说,在你创建一...

富民县13666039977: django 从数据库查找空的数据怎么处理 -
屠静间苯: 1、代码文件第一行加编码定义了吗?比如如下:1#coding:utf-82、代码里面的中文字符串前面最好加u,比如:1 students.objects.filter(sex=u'男')3、Django技术栈下所有的编码都是unicode,所以你在json.dupm哪儿做的编码设置有点突兀.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网