首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DjangoORM操作

前言 Django框架功能齐全自带数据库操作功能,本文主要介绍DjangoORM框架 到目前为止,当我们程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb...来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 Django orm优势: Djangoorm操作本质上会根据对接数据库引擎,翻译成对应sql语句;所有使用Django...,如果数据库迁移,只需要更换Django数据库引擎即可; 一、Django连接MySQL 1、创建数据库 (注意设置 数据字符编码) 由于Django自带orm是data_first类型ORM,...连表操作 我们在学习djangoorm时候,我们可以把一对多,多对多,分为正向和反向查找两种方式。...; 如果B表1条记录也对应A表N条记录,两表之间就是双向1对多关系,也称为多对多关系; 在orm设置如果 A表设置了外键字段user=models.ForeignKey('UserType') 到

4.7K10

DjangoORM

查询集 返回一个对象集合 调用如下方法会返回查询集 filter all order_by exclude 返回条件之外数据 exists 判断查询集是否有数据, 返回 true false first...all(): 查询所有结果 get(**kwargs): 返回与所给筛选条件相匹配对象,返回结果有且只有一个,如果符合筛选条件对象超过一个或者没有都会抛出错误。...——一个特殊QuerySet,运行后得到并不是一系列 model实例化对象,而是一个可迭代字典序列 exclude(**kwargs): 它包含了与所给筛选条件不匹配对象 order_by...(*field): 对查询结果排序 reverse(): 对查询结果反向排序 distinct(): 从返回结果剔除重复纪录 values_list(*field): 它与values...()非常相似,它返回是一个元组序列,values返回是一个字典序列 count(): 返回数据库匹配查询(QuerySet)对象数量。

43120
您找到你想要的搜索结果了吗?
是的
没有找到

如何查看Django ORM执行SQL语句

Django ORM对数据库操作封装相当完善,日常大部分数据库操作都可以通过ORM实现。 但django将查询过程隐藏在了后台,这在开发时可能会略显晦涩,并且使用方式不当还会造成开销过大。...那么如何查看django何时执行了什么sql语句呢?答案是使用Logging。...,在shell即可看见相关日志,如下: [2018-04-21 21:09:14,676] (0.002) SELECT `blog_article`....ASC; args=(3, 4, 5, 6, 7, 8, 9, 10, 11, 12) [2018-04-21 21:09:14,708] "GET / HTTP/1.1" 200 22325 上面打印出日志是我博客首页获取前十篇文章时所执行部分...Django使用Python内建logging模块执行系统日志记录。 参考资料 [1] 原文链接: https://zhuanlan.zhihu.com/p/36351635

1.8K20

浅谈优化Django ORM性能问题

Django是个好工具,使用很广泛。 在应用比较时候,会觉得它很快,但是随着应用复杂和壮大,就显得没那么高效了。当你了解所用Web框架一些内部机制之后,才能写成比较高效代码。...Django文档中有那么一节,详细描述了DB部分优化, ORM 从一开始就应该写比较高效一些(毕竟有那么多最佳实践) 优化,很多时候意味着代码可能变得不太清晰。...总结下3个方式 django.db.connection django自身提供,比较底层 django-extensions 可以在shell环境下方面调试 django-debug-toolbar 可以在...Django ORM关联查询非常好用,我们自然希望使用这种方式。在一个循环中,如果不使用 select_related 或者 prefetch_related,可能会导致几百个查询。...Django ORM性能问题就是小编分享给大家全部内容了,希望能给大家一个参考。

1.6K30

DjangoORM简介

模型是Python一个类,它是由django.db.models.Moduel派生出一个子类 一个模型类就代表数据库一张表 模型类每一个类属性都代表数据库一个字段 模型是数据交互接口...,是表示和操作数据库方法和方式 ORM框架 定义:ORM(Object Relation Mapping)即对象关系映射,它是一种程序技术,它允许你使用类和对象数据库进行操作,从而进行避免通过SQL...缺点 对于复杂业务,使用成本较高… 根据对象操作转换成SQL语句,根据查询结果转化成对象,在映射过程中有性能损失 世间万物 即无完美 ORM DataBase Class(类) Table...(数据表) Object(对象) DataRow(数据行) Attribute(属性) Field(字段) 模型代码示例 该文件位于APPmodels.py from django.db import...migrations文件同步回数据库 模型类-创建 from django.db import models class 模型类名(models.Model): 字段名 = models.字段类型

57520

Django ORM判断查询结果是否为空,判断djangoorm为空实例

print "QuerySet is empty" 总结: QuerySet.exists() QuerySet.count()==0 QuerySet 补充知识:关于在Sqlite3如何判断数据表返回结果集是否为空问题解决...“select max(id) from tablename”,在使用sqlite3_get_table调用成功后,返回columnum和rownum都为1,即使结果集里无记录也是如此,我们在sqlite3...shell可以看到该条查询语句在结果集为空时候确实返回了1行1列,不过那个行为空行。...在此种情况下,只能对返回结果集字符串指针(char **dbResult)判断是否为空来解决结果集是否为空问题,而不能以columnum和rownum是否为0来判断。...以上这篇Django ORM判断查询结果是否为空,判断djangoorm为空实例就是小编分享给大家全部内容了,希望能给大家一个参考。

6.8K10

使用Oracleemp,dept来学习Django ORM

学习Django时候,总是觉得这部分内容和实际应用有一定差别或者距离。...一方面Django自带ORM对于底层数据库来说是一种适配性很强组件,可以不强依赖于某一种数据库,sqlite,MySQL,Oracle,PG等等都可以,学习起来需要一定周期。...第三点就是没有融会贯通,好像看明白了,但是实际写时候发现还是摸黑,不知道从何入手。 所以我就换个思路,从数据库角度来反向解析Django怎么实现我们常见数据需求。...我们配置下emp,dept结构,是在Djangomodels.py文件配置即可。...所以我们重点就是排序了,ORM本身有order_by函数,还可以调整DESC,ASC,所以一个基本符合要求方式如下: >>> emp.objects.all().order_by(('-job'),

86160

在脚本单独使用djangoORM模型详解

有时候在测试django中一些模块时,不想重新跑一整个django项目,只想跑单个文件,正好写在if __name__ == ‘__main__’: 这样也不会打扰到正常代码逻辑 方法 正常方法 大家都知道方法就是...’python manage.py shell’,当然我知道这可能不是你需要; 更好用方法 在脚本import模型前调用下面几行即可: import os, sys BASE_DIR = os.path.dirname...))) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dj_tasks.settings") # 你djangosettings文件 接下来再调用...在导入models时候,还没有在django对应环境下导入 这里导入顺序很重要 import os import django os.environ.setdefault('DJANGO_SETTINGS_MODULE...以上这篇在脚本单独使用djangoORM模型详解就是小编分享给大家全部内容了,希望能给大家一个参考。

4.8K10

DjangoORM字段类型-2

模型类-字段选项 字段选项:指定创建额外信息 允许出现多个字段选项,多个选项之间使用,隔开 primary key 如果设置为True,表示该列为主键,如果指定一个字段为主键,则此数据库不会创建...Id字段 blank 设置为True时候,字段可以为空。...设置为False时候字段是必须填写 null 如果设置为True则表示该列允许为空....unique 如果设置为True表示该字段在数据库值必须是唯一(不能重复出现) db_column 指定列名称,如果不指定的话则采用属性名作为列名 verbose_name 设置此字段在admin...界面上显示名称 模型类-Meta类 使用补Meta类来给模型赋予属性,Meta类下有很多内建类属性,可对模型类做一些控制 class Author(models.Model): name =

62530

DjangoORM操作-查询数据

i.create_date,"操作系统",i.system) # 打印结果 创建日期 2021-06-16 13:52:14+00:00 操作系统 Centos7 作用:查询Mymodel中所有的数据等同与数据库...select * from table,返回QuerySet容器对象,内部存放MyModel实例 可以在模型类定义__str__方法,字典统一queryset输出格式 def __str_...,内部存放是元组 会将查询出来数据封装到元组,在封装到查询集合QuerySet >>> a = Asset.objects.values_list("create_date") >>> a...(属性1=值1,属性2=值2),当多个属性在一起为与关系 作用:返回包含此条件全部数据集 返回值:QuerySet容器对象,内部存放模块实例 # 查询数据库 create_user为admin from...# 查询数据库 create_user为admin并且系统为Linux以外服务器信息 from monitor.models import Asset info = Asset.objects.exclude

78920

DjangoORM操作-创建数据

ORM-创建操作 基本操作包括增删改查(CRUD)即Create、Read、Update、Delete ORM CRUD核心-> 模型类.管理器对象 管理器对象 每个继承models.Model模型类...,都会有一个object对象被同样继承下来,这个对象叫管理器对象....数据库增删改查可以通过管理器对象实现 class Author(models.Model): Author.objects.create() # objects是管理器对象 Django Shell...在Django中提供了一个交互式操作项目叫做Django Shell 他能够在交互模式 工程代码执行相应操作 注意:代码发生变化时候,请重新进入Django Shell 启动方式:python...manage.py shell 创建数据 Django ORM使用一种直观方式把数据库表数据表示成Python对象 创建数据每一条记录就是创建一个数据对象 方法一 Author.objects.create

43730

Django ORM filter() 运用详解

最近发布代码时候,遇到一个问题,发现Pythoneval()函数危险性.然而我还是个菜鸟,其中有一段代码是这样。...models.TUserInfo.objects.filter(**field_dict)[page_num * page – page_num:page_num * page] 因为没有想到用其它方式来运用orm...补充知识:django orm查询filter与get区别 输入参数: get参数只能是model定义哪些字段,只支持严格匹配 filter参数可以是字段也可以是扩展where查询关键字,...filter有没有匹配记录都可以 filter方法是从数据库取得匹配结果,返回一个对象列表,如果记录不存在的话,它会返回[]。...以上这篇Django ORM filter() 运用详解就是小编分享给大家全部内容了,希望能给大家一个参考。

1.5K40

Django笔记(九)DjangoORM,查询数据方法

建表 需求(1) 需求(2) 总结 value()函数,获取列表 value()函数,获取元组 总结 建表 目前有两个表,一个用户表,一个用户类型表,一个用户对应一类型,但是一个类型下面有好多用户...外键是在用户表里面 需求(1) 根据查询出来用户,获取他用户类型,这个就是多表查询,实现代码是 先查询出用户,直接根据外键字段获取他用户类型 需求(2) 根据一个用户类型,查询他下面的所有的用户...我们看用户类型表,只有一个字段,没有外键,这个如何实现呢?...其实有一个隐含字段,写法是 总结 value()函数,获取列表 value()函数,获取元组 总结 以上方法 字典和元组是不可以跨表查询 以下写法是可以跨表

84020

Django ORM 查询表某列字段值方法

在MVC/MVT设计模式Model模块中都包括ORM 2.ORM优势 (1)只需要面向对象编程, 不需要面向数据库编写代码. 对数据库操作都转化成对类属性和方法操作....通过简单配置就可以轻松更换数据库, 而不需要修改代码. 3.ORM劣势 相比较直接使用SQL语句操作数据库,有性能损失....下面看下Django ORM 查询表某列字段值,详情如下: 场景: 有一个表某一列,你需要获取到这一列所有值,你怎么操作?...查看高阶用法,告诉你怎么获取一个值list,如: [‘测试feed’, ‘今天’, ‘第三个日程测试’, ‘第四个日程测试’, ‘第五个测试日程’] 到此这篇关于Django ORM 查询表某列字段值文章就介绍到这了...,更多相关django orm 字段值内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

11.7K10
领券