所有的软件开发过程中,都会涉及到对象和关系型数据库,在用户层面和业务逻辑层面,程序员编写代码都是面向对象的,当我们对象的信息发生变化的时候,都需要将对应的信息,传到关系型数据库中.而在此之前,需要我们编写对应的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%,相对于提升的开发效率,这点性能损耗是可以接受的!

最新文章

  1. [BZOJ1562][NOI2009] 变换序列
  2. oracle删除users表空间
  3. 关于insert /*+ append*/ 各种insert插入速度比较
  4. role roleMapping 权限说明
  5. AngularJs-数据绑定
  6. NGUI之scroll view制作,以及踩的坑总结
  7. C# 序列化(Serialize)与反序列化(Deserialize)ZZ
  8. CentOS 7.0体验与之前版本的不同
  9. JS 同源策略
  10. impress.js学习总结
  11. Kinect研究
  12. Error Code: 1414. OUT or INOUT argument 2 for routine company.new_procedure is not a variable or NEW
  13. ansible之二:模块用法
  14. windows服务项目的 安装 卸载 查看
  15. 常用的 git 命令清单
  16. CSS之fontAwesome代替网页icon小图标
  17. POJ 2352 数星星
  18. 接收连接basic_socket_acceptor
  19. [Windows Azure] How to use the Table Storage Service
  20. 取消excel 工作保护 密码的宏

热门文章

  1. L The Digits String(没有写完,有空补)
  2. c# 获取 Apk ,Aar 文件包名
  3. Java 8实战之读书笔记三:函数式数据处理
  4. crack Tut.ReverseMe1.exe
  5. oracle ALL视图
  6. JavaScript—— 案例:表单验证
  7. URAL - 1486 二维字符串HASH
  8. [SCOI2003]字符串折叠(区间dp)
  9. CS184.1X 计算机图形学导论(第四讲)
  10. Android使用gradle依赖管理、依赖冲突终极解决方案(转)