ORM

ORM简介

  • MVC框架中有一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库
  • ORM是“对象-关系-映射”的简称,主要任务是:

    • 根据对象的类型生成数据库表结构
    • 将对象、列表的操作,转换为sql语句
    • 将sql查询到的结果转换为对象、列表

为什么使用ORM

Django和其他大多数现代Web框架一样,依赖一个强大的DAO(data access object),视图将底层的关系数据库和Python的面向对象特质联系起来。

使用ORM有4个充分的理由:

封装有用的方法

Django模型对象是定义变量的首选方式,而变量通常对应的是数据库的列。

你可以请求一个 id 为 5 的Author对象并检查其 author.name, 而不必去写SELECT name from authors WHERE id=5这样的SQL语句, 这样要 Pythonic的多。

而且,模型对象能给那个简陋的例子增加许多额外的价值,Django的ORM可以让你定义任何实例方法:

  • 定义只读的变量或者属性集合,也称为 数据集合data aggregation或者计算属性calculated attribute.
  • Django的ORM允许重写内置的数据库修改方法,例如保存和删除对象.
  • 和编程语言集成(python)通常比较简单,可以让你的数据库对象和特定的接口或API更加一致

可移植性

ORM作为应用程序和数据库之间的代码层,通常具有很好的可移植性.

安全性

使用ORM之后很少有机会需要自己执行SQL查询,所以不必担心保护性很差的查询字符串导致的问题,如SQL注入攻击等

而且ORM还提供一个智能化的引用和转义输入变量的核心机制,让你不在花很多时间来处理这种细枝末节

表现力

跟直接编写SQL相比,ORM最大的好处就是从数据库中获取记录时使用的查询语法。高级一点的语法不仅更容易编写,而且这种带入到Python领域的查询机制更带来了一系列有用的技巧和方法。比如,直接循环一个数据结构,原本在SQL中是相当笨拙的,现在却简洁的多,还可以回避本来是无可避免的讨厌的字符串操作。

Copyright © itrunner.cn 2020 all right reserved,powered by Gitbook该文章修订时间: 2022-08-28 07:44:16

results matching ""

    No results matching ""