所有的软件开发过程中,都会涉及到对象和关系型数据库,在用户层面和业务逻辑层面,程序员编写代码都是面向对象的,当我们对象的信息发生变化的时候,都需要将对应的信息,传到关系型数据库中.而在此之前,需要我们编写对应的SQL语句来创建数据表,

(例如: 创建一个auth_user表,需要定义好每一个字段,给字段设置好对应类型,属性 ,并且给数据表设置主键或唯一键.然后定义好表的存储引擎 ,字符编码)

然后在业务逻辑中,会有很多SQL语句,对表进行增删改查操作

然后在业务逻辑中,会有很多SQL语句,对表进行增删改查操作,

举例子; 通过POST请求提交商品评论信息

python的一大设计思想-_一切事务皆对象

能不能将对数据库的操作,也通过面向对象的方式来实现呢???

--因此就有了 ORM

什么是ORM?

将我们的对象,自动XX化到关系型数据库中,相当于充当业务逻辑层和数据库层的桥梁

那么,在Django中,我们应该如何开发模型类呢?

 这就是 Models.py文件的作用!

-Django中,每建一个应用的时候,都会在应用的文件夹下,

 自动生成一个 models.py文件,这里就是编写模型类的地方

模型类的优势与劣势:

 优势--

  开发人员能够专注于业务逻辑的处理,提高开发效率,

  以后就不需要在业务逻辑代码中编写原生的SQL语句了,通过操作对象的方式,就能够操作数据库!

 劣势--

  一定程度上牺牲程序的执行效率,

  ORM写的久了,可能会忘了SQL语句

项目中如何取舍? --

    复杂的SQL语句,或者数据库层面的功能--使用原生SQL更加方便

    提升开发效率 --使用ORM

  例如-

  在Flask中使用 Sqlalchemy 就像在Django中使用ORM一样方便,执行效率只比原生SQL慢了5%,相对于提升的开发效率,这点性能损耗是可以接受的!

ORM模型类介绍,的更多相关文章

  1. Python实现一个ORM模型类

    ORM是三个单词首字母组合而成,包含了Object(对象-类),Relations(关系),Mapping(映射).解释过字面意思,但ORM的概念仍然模糊.私以为要理解一个事物,最好的法子是搞明白它出 ...

  2. CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)

    前言: 以下功能在国庆期就完成并提前发布了,但到今天才有时间写文介绍,主要是国庆后还是选择就职了,悲催的是上班的地方全公司都能上网,唯独开发部竟不让上网,是个局域网. 也不是全不能上,房间里有三台能上 ...

  3. 046:ORM模型介绍

    ORM模型介绍: 随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了: 1.SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长.会出现很多相近的SQL ...

  4. Django(三) 模型:ORM框架、定义模型类并创建一个对应的数据库、配置Mysql数据库

    一.模型概述 https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial02/ https://www.runoob.com/django/dj ...

  5. Python的自定义属性访问跟描述器以及ORM模型的简单介绍

    一 . 自定义属性访问 1.__getattr__ 作用:当我们访问属性的时候,如果属性不存在(出现AttrError),该方法会被触发. 2.__getattribute__ 作用:访问属性的时候, ...

  6. SQLAlchemy01 /SQLAlchemy去连接数据库、ORM介绍、将ORM模型映射到数据库中

    SQLAlchemy01 /SQLAlchemy去连接数据库.ORM介绍.将ORM模型映射到数据库中 目录 SQLAlchemy01 /SQLAlchemy去连接数据库.ORM介绍.将ORM模型映射到 ...

  7. SQLAlchemy(一):SQLAlchemy去连接数据库、ORM介绍、将ORM模型映射到数据库中

    SQLAlchemy01 /SQLAlchemy去连接数据库.ORM介绍.将ORM模型映射到数据库中 目录 SQLAlchemy01 /SQLAlchemy去连接数据库.ORM介绍.将ORM模型映射到 ...

  8. Django(10)ORM模型介绍

    前言 随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了: 1.SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长.会出现很多相近的SQL语句. 2. ...

  9. Django中的ORM如何通过数据库中的表格信息自动化生成Model 模型类?

    Inspectdb Django项目通过绑定的数据库中的相应表格直接自动化生成Model 模型类 python manage.py inspectdb Django 中的 ORM 可以实现对象关系映射 ...

随机推荐

  1. JS formData

    有时候,我们需要使用formData来上传文件,并根据反馈的结果做不同的处理, 这个时候使用form来提交文件不方便 #perform 获取的的上传文件所用的input标签 var formData ...

  2. Spring事务传播及数据库事务操作

    从Spring 事务配置说起 先看看Spring 事务的基础配置 <aop:aspectj-autoproxy proxy-target-class="true"/> ...

  3. var、let、const的区别

    var.let.const的区别 var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问. let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问. const用来定义常量,使 ...

  4. Codeforces 208E. Blood Cousins

    传送门 题目大意: 小C喜欢研究族谱,这一天小C拿到了一整张族谱. 小C先要定义一下k-祖先. x的1-祖先指的是x的父亲 x的k-祖先指的是x的(k-1)-祖先的父亲 小C接下来要定义k-兄弟 x的 ...

  5. MVC模型的基本原理及实现原理

    [转载]MVC架构在Asp.net中的应用和实现 摘要:本文主要论述了MVC架构的原理.优缺点以及MVC所能为Web应用带来的好处.并以“成都市信息化资产管理系统”框架设计为例,详细介绍其在Asp.n ...

  6. mitdump爬取当当网APP图书目录

    因为mitmproxy没办法连接数据库所以,只能先把结果保存为txt文件,再读取到数据库中. 在滑动APP界面时,对代码进行分析 import requests import re import ur ...

  7. shell截取小数点前后的子串

  8. 【LeetCode】回溯法 backtracking(共39题)

    [10]Regular Expression Matching [17]Letter Combinations of a Phone Number [22]Generate Parentheses ( ...

  9. Sass函数:值列表函数length

    length() 函数主要用来返回一个列表中有几个值,简单点说就是返回列表清单中有多少个值: >> length(10px) 1 >> length(10px 20px (bo ...

  10. PCB设计规则中英文对照

    Electrical(电气规则) Clearance:安全间距规则 Short Circuit:短路规则 UnRouted Net:未布线网络规则 UnConnected Pin:未连线引脚规则 Ro ...