Django(10)ORM模型介绍[通俗易懂]

Django(10)ORM模型介绍[通俗易懂]前言随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了:1.SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长。会出现很多相近的SQL语句。2.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了:

  • 1.SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长。会出现很多相近的SQL语句。
  • 2.很多SQL语句是在业务逻辑中拼出来的,如果有数据库需要更改,就要去修改这些逻辑,这会很容易漏掉对某些SQL语句的修改。
  • 3.写SQL时容易忽略web安全问题,给未来造成隐患。SQL注入。

所以我们采用ORM模型
 

ORM模型介绍

orm全称Object Relational Mapping,中文叫做对象关系映射,通过ORM我们可以通过类的方式去操作数据库,而不用再写原生的SQL语句。通过把表映射成类,把行作实例,把字段作为属性,ORM在执行对象操作的时候最终还是会把对应的操作转换为数据库原生语句
 

ORM的优点

  • 易用性:使用ORM做数据库的开发可以有效的减少重复SQL语句的概率,写出来的模型也更加直观、清晰。
  • 性能损耗小:ORM转换成底层数据库操作指令确实会有一些开销。但从实际的情况来看,这种性能损耗很少(不足5%),只要不是对性能有严苛的要求,综合考虑开发效率、代码的阅读性,带来的好处要远远大于性能损耗,而且项目越大作用越明显。
  • 设计灵活:可以轻松的写出复杂的查询。
  • 可移植性:Django封装了底层的数据库实现,支持多个关系数据库引擎,包括流行的MySQLOraclePostgreSQLSQLite。可以非常轻松的切换数据库。
    Django(10)ORM模型介绍[通俗易懂]
     

ORM的实现过程

(1)配置目标数据库,在setting.py中设置配置属性

(2)构建虚拟对象数据库,在App的model.py文件中以类的形式定义模型

(3)通过模型在目标数据库中创建对象的数据表

(4)在视图函数中使用模型来实现目标数据库的读写操作

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164931.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 点到圆的最近距离公式推导

    点到圆的最近距离公式推导该距离公式在 CircleFittin 相关的一篇文章中用到 现实现其推导过程 设圆的一般的方程形式 任一点 P 的坐标 点 P 到圆上点得最短距离的公式 推导过程 1 由圆一般方程形式可以推导出圆的标准方程形式 nbsp nbsp nbsp nbsp nbsp nbsp nbsp 且有 即 nbsp nbsp nbsp nbsp nbsp nbsp nbsp 圆心坐标 nbsp 半径 2 点到圆的最短距离 nbsp nbsp nbsp nbsp nbsp nbsp 点到圆的最短距离等于点到圆心的距离减去半径的绝

    2025年6月10日
    2
  • C#实现远程关机与远程开机(唤醒)

    C#实现远程关机与远程开机(唤醒)//***********************************远程关机************************************///www.uzhanbao.com///1.关闭远程机防火墙///2.设置远程强制关机系统权限gpedit.msc///3.计算机属性远程设置…

    2022年5月8日
    367
  • 12v继电器驱动电路

    12v继电器驱动电路转载于:https://www.cnblogs.com/prayer521/p/5981336.html

    2022年6月24日
    28
  • python中类(class)

    python中类(class)"""面向过程和面向对象(oop:objectorientedprogramming)的基本概念面向过程:—侧重于怎么做?1.把完成某一个需求的所有步骤从头到尾逐步实现2.根据开发要求,将某些功能独立的代码封装成一个又一个函数3.最后完成的代码,就是顺序的调用不同的函数特点:1.注重步骤与过程,不注重职责分工2.如果需求复杂,代码会变得很复杂3.开发复杂项…

    2022年5月1日
    40
  • ubuntu16.04分区方案设置(新装的ubuntu没有网络驱动)

    linux分区设置。法一:Swap(相当于电脑内存):逻辑分区、大小设置为电脑内存大小,2G,4G;/boot(引导分区):主分区:大小设置为200M;/home(用户存储数据用):逻辑分区,要尽可能大,100G空间可以设置为85G,留10G给主分区即可。/.(主分区):主分区,用于存放系统,相当于win7的C盘,10G即可。法二:/.(主分区):主分区,只分这一个区,…

    2022年4月14日
    55
  • MinGW32和64位交叉编译环境的安装和使用「建议收藏」

    MinGW32和64位交叉编译环境的安装和使用原文出处: CompileGraphicsMagick,Boost,BotanandQTwithMinGW64underWindows764 http://www.kineticsystem.org/?q=node/191安装MSYS从下面的地址下载并运行:mingw-get-inst-20120426.exehttp://so

    2022年4月8日
    246

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号