Django入门教程

前言

第一章: django快速入门

第二章: django MTV架构

第三章: django视图

第四章: django模板

第五章: django模型

第六章: django后台管理系统

第七章: 项目实战-简易的博客系统

第八章:django表单

第九章:django用户认证系统

第十章:django中的会话

第十一章:django安全

第十二章:django性能优化

第十三章:django实用工具

首页 > Django入门教程 > 第五章: django模型 > 5.2节: 对象关系映射ORM

5.2节: 对象关系映射ORM

薯条老师 2020-07-24 16:06:44 234288 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

5.2.1 什么是ORM

ORM的英文全称为Object Relational Mapping,即对象关系映射。理解ORM需要考虑以下三个问题:

(1) 什么是对象?

(2) 什么是关系?

(3) 什么是映射?

带着这三个问题,现在来一步步地理解何为对象关系映射:

什么是对象?

在面向对象中,抽象后的数据类型叫做类,类由类属性和类方法组成。类属性表示这种数据类型共有的特征,而类方法表示该数据类型共有的行为。对类进行实例化,可以得到一个具体的对象。

现在来定义一个表示女性类型的Female类:

class Female:
    # 定义女性的共有特征
    pregnant = True
    suckling_a_baby  = True

# 对Female类进行实例化得到一个female对象
female = Female()

什么是关系?

关系指的是关系型数据库中的“关系”,在理解关系的概念之前,读者先看下图所示的数据表格,表格中存储了多个女性的基本信息:

编号

姓名

 

年龄

1

小美

23

2

小丽

25

3

小花

21

4

小朵

22

上图中的数据表格由行列组成了一张二维表,这张二维表就是所谓的关系。在该二维表中,每一行中的具体内容被称为一个元组, 例如表格数据的第一行:(1,小美,23)。同学们可以把元组简单地理解为表格中的一个完整的数据对象,表格中的列名构成了数据对象的属性,每一行中的所有属性构成了该数据对象的描述,这样的描述就是所谓的关系模型。例如在该数据表中,使用关系模型:(编号,姓名,年龄),来对数据对象(女性)进行了描述。

什么是映射?

映射是指将两个元素进行一一对应,ORM中的映射是指将对象与关系进行一一映射。具体的映射方式表现为:

(1) 将类名与数据库的表名进行一一对应

(2) 将类属性与数据表中的列属性进行一一对应

(3) 将实例化后的对象与数据表中的一行记录进行一一对应

 对象与关系的映射关系如下图所示:

 image.png

5.2.2 ORM的优势及缺点

ORM的优势在于,只需以对象的使用方式来进行数据库的读写,django会将对对象的操作,自动转换为实际的数据库读写操作。按照传统的方式进行数据库操作,存在以下弊端:

(1) 开发人员在代码中耦合SQL语句来进行数据库的读写操作

(2) 不同的数据库,其SQL语句会存在差别,如果在项目中更换数据库,代码中的SQL语句也需要同步进行修改

ORM解决了以上两个问题,只需按对象的使用方式来进行数据库的读写操作,而无需进行SQL语句的编写。ORM的缺点在于,其充当一个中间层,与直接操作数据库相比,使用ORM会在一定程度上牺牲程序的执行性能。

5.2.3 在django中使用ORM

在5.3节中会详细介绍如何在django中使用ORM。以下为在django中使用ORM的核心流程:

(1) 在模型中定义一个类

(2) 在类中定义类属性,以及相关的操作方法

(3) 在视图中使用ORM的API对特定的模型进行操作。

(4) 使用django中的迁移命令,将模型与数据库建立映射

5.2.4 最具实力的小班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4)
Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取Python学习资料:



欢迎 发表评论: