Skip to content

Latest commit

 

History

History
44 lines (26 loc) · 2.52 KB

6django模型简介.md

File metadata and controls

44 lines (26 loc) · 2.52 KB

Django 模型

前言

我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增、删、改、查),而一旦谈到数据的管理操作,就需要用到数据库管理软件,例如mysql、oracle、Microsoft SQL Server等。

如果应用程序需要操作数据(比如将用户注册信息永久存放起来),那么我们需要在应用程序中编写原生sql语句,然后使用pymysql模块远程操作mysql数据库,详见图1

但是直接编写原生sql语句会存在两方面的问题,严重影响开发效率,如下:

  1. sql语句的执行效率:应用开发程序员需要耗费一大部分精力去优化sql语句
  2. 数据库迁移:针对mysql开发的sql语句无法直接应用到oracle数据库上,一旦需要迁移数据库,便需要考虑跨平台问题

ORM

为了解决上述问题,django引入了ORM的概念,ORM全称Object Relational Mapping,即对象关系映射,是在pymysq之上又进行了一层封装,对于数据的操作,我们无需再去编写原生sql,取代代之的是基于面向对象的思想去编写类、对象、调用相应的方法等,ORM会将其转换/映射成原生SQL然后交给pymysql执行。

如此,开发人员既不用再去考虑原生SQL的优化问题,也不用考虑数据库迁移的问题,ORM都帮我们做了优化且支持多种数据库,这极大地提升了我们的开发效率,下面就让我们来详细学习ORM的使用吧

映射关系:

数据库中的表
对象 表单记录
对象获取属性 记录的某个字段对应的值

ORM的优势

(1)只需要面向对象编程, 不需要面向数据库编写代码.

  • 对数据库的操作都转化成对类属性和方法的操作.
  • 不用编写各种数据库的sql语句.

(2)实现了数据模型与数据库的解耦, 屏蔽了不同数据库操作上的差异.

  • 不在关注用的是mysqloracle...等.
  • 通过简单的配置就可以轻松更换数据库, 而不需要修改代码.

ORM劣势

  • 相比较直接使用SQL语句操作数据库,有性能损失.
  • 根据对象的操作转换成SQL语句,根据查询的结果转化成对象, 在映射过程中有性能损失.

!> 注意事项:django的orm不会自动帮你创建库,库需要你自己手动创建,表会自动帮你创建,你只需要书写符合django orm语法的代码即可,去应用下所在的models.py中书写类