谈Django绕不开ORM

ORM : ORM概念,ORM特点,ORM 的优点,ORM 的缺点

orm : 对象关系映射 (Object Relational Mapping) ,用于实现面向对象编程语言里不同类型系统的数据之间的转换 [1] 。从效果上说,它其实是创建了一个可在编程语言里使用的–“虚拟对象数据库”。
ORM方法论基于三个核心原则: 简单:以最基本的形式建模数据。 传达性:数据库结构被任何人都能理解的语言文档化。 精确性:基于数据模型创建正确标准化的结构
概念(百度百科)
对象-关系映射(Object Relational Mapping,简称ORM),是随着面向对象的[软件开发方法发展而产生的。用来把对象模型表示的对象映射到基于S Q L 的关系模型数据库结构中去。这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的 SQ L 语句打交道,只需简单的操作实体对象的属性和方法 。O R M 技术是在对象和关系之间提供了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化 。
1、数据类型映射模式
2、类映射模型
3、关联映射模式
4、引用映射模式

一:概念
简单说,
ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写。

ORM 把数据库映射成对象。
• 数据库的表(table) --> 类对象(class)
• 记录(record,行数据)–> 对象(object)
• 字段(field)–> 对象的属性(attribute)

理解:例如下图

二:ORM特点:
ORM 使用对象,封装了数据库操作,因此可以不碰 SQL 语言。开发者只使用面向对象编程,与数据对象直接交互,不用关心底层数据库。
可以方便实现: 增加(Create)、读取查询(Read)、更新(Update)和删除(Delete)

三:ORM 的优点。
• 数据模型都在一个地方定义,更容易更新和维护,也利于重用代码。
• ORM 有现成的工具,很多功能都可以自动完成,比如数据消毒、预处理、事务等等。
• 它迫使你使用 MVC 架构,ORM 就是天然的 Model,最终使代码更清晰。
• 基于 ORM 的业务代码比较简单,代码量少,语义性好,容易理解。
• 你不必编写性能不佳的 SQL。

四:ORM 的缺点。
• ORM 库不是轻量级工具,需要花很多精力学习和设置。
• 对于复杂的查询,ORM 要么是无法表达,要么是性能不如原生的 SQL。
• ORM 抽象掉了数据库层,开发者无法了解底层的数据库操作,也无法定制一些特殊的 SQL。

原文:https://blog.csdn.net/aixiangnan/article/details/90300531

转载于:https://www.cnblogs.com/wangbaojun/p/11064506.html

django优化--ORM优缺点相关推荐

  1. 【Django】ORM操作#2

    目录 必知必会的13条查询方法 单表查询之神奇的双下划线 一对多 ForeignKey 多对多 ManyToManyField 在Python脚本中调用Django环境 Django终端打印SQL语句 ...

  2. python——Django(ORM连表操作)

    千呼万唤始出来~~~当当当,终于系统要写django的ORM操作啦!!!这里记录的是django操作数据库表一对多.多对多的表创建及操作.对于操作,我们只记录连表相关的内容,介绍增加数据和查找数据,因 ...

  3. 西游之路——python全栈——django中orm的使用(1)

    目录 首先推荐两篇文章:Django之ORM操作,http://www.cnblogs.com/yuanchenqi/articles/6083427.html十分全面. 另外和python---OR ...

  4. Django数据库ORM模型使用(数据查询)!!!Django数据库如何使用ORM模型查询数据? ✧*。٩(ˊᗜˋ*)و✧*。 Django初体验

    文章目录 查询方法 查看执行的SQL语句 查询条件 精准与模糊查询 比较条件 时间条件 聚合函数 Avg:求平均值. Count:获取指定的对象的个数. Max和Min:获取指定对象的最大值和最小值. ...

  5. django mysql orm教程_带你了解Django ORM操作(基础篇)

    前言 在日常开发中,需要大量对数据库进行增删改查操作. 如果头铁的话,使用原生SQL是最好的,毕竟性能又高,又灵活. 但是通常情况下,我们不是太需要那么苛刻的性能,也没有那么多刁钻的需求用原生SQL ...

  6. Django 数据库ORM 操作 - 字段的类型和参数

    通过Django的ORM创建表的时候,我们需要定义自己的类. 定义类的时候,他有各种各样的字段类型,每个字段都有自己的参数可以进行配置,下面简单的归纳一下. 首先看看字段的类型.尽管Python提供了 ...

  7. Django 中ORM 的使用

    一:Django 中 orm 的使用 1:手动新建一个数据库 2 :告诉Django连接哪个数据库 settings.py里配置数据库连接信息: #数据库相关的配置项 DATABASES ={'def ...

  8. Django基础——ORM字段和字段参数

    ORM概念: 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象( 1. 不同的程序员写的SQL水平参差不齐 2. ...

  9. django -- 实现ORM登录

    前戏 上篇文章写了一个简单的登录页面,那我们可不可以实现一个简单的登录功能呢?如果登录成功,给返回一个页面,失败给出错误的提示呢? 在之前学HTML的时候,我们知道,网页在往服务器提交数据的时候,都是 ...

  10. django orm插入一条_如何通过django的ORM远程发布文章?

    利用django的ORM可以方便的给数据库插入文章 但是假如我django放在阿里云,那我想在本地写个插件,每天很方便的插入一些数据,最好是通过ORM的,因为管理起来比较方便,会涉及到多个站,可能会有 ...

最新文章

  1. AI企业下一个使命:让生物特征数据使用走向阳光透明
  2. 在线音乐网站Pandora申请IPO融1亿美元
  3. mysql手动写的时间_Mysql日期和时间函数
  4. linux命令详解——iostat
  5. wallpaper怎么设置锁屏_Apple ID密码忘了怎么找回?丨如何让面容和指纹解锁立马失效?...
  6. 207. Course Schedule
  7. 自建CDN Xnign产品指标
  8. OpenSUSE11实现pam_mysql对FTP认证管理
  9. window下配置定时任务实现类似linux的cron定时任务
  10. SpringBoot:第一篇 新建spring boot 应用
  11. 如何提高软件测试团队工作效率
  12. 如何处理给MacBook安装win10双系统时拷贝windows安装文件出错?
  13. MYSQL union 联合查询
  14. Go/Goland 开发笔记
  15. 终结符号和非终结符号
  16. 使用Excel VBA制作成绩统计图----(嵌入模式)
  17. python离线语音唤醒算法_python实现离线语音识别
  18. Python浪漫520表白代码
  19. linux学习笔记-rsync原理及使用
  20. 【Windows Server 2019】组策略的配置与管理——配置基于本地的组策略

热门文章

  1. Python中.mat文件的读写操作
  2. 如何将交换功能写成函数?
  3. linux下回收站在哪个文件夹,linux回收站在哪里
  4. php js树状菜单,php+mysql+js实现树形菜单代码
  5. nyoj Splits the string 749
  6. 小牛uqi几个版本区别_川崎ZX25R便宜版本长这样?
  7. C语言数组旋转问题(C笔记)
  8. 翻译:道路机动车辆驾驶自动化系统相关术语的分类和定义 J3016_202104
  9. 阿里云云计算 49 云监控的概念
  10. 极客大学架构师训练营 大数据 GFS、MapReduce、BigTable,Hadoop HDFS Yarn HiveQL 第12次作业