ORM模型类介绍,
所有的软件开发过程中,都会涉及到对象和关系型数据库,在用户层面和业务逻辑层面,程序员编写代码都是面向对象的,当我们对象的信息发生变化的时候,都需要将对应的信息,传到关系型数据库中.而在此之前,需要我们编写对应的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%,相对于提升的开发效率,这点性能损耗是可以接受的!
最新文章
- [BZOJ1562][NOI2009] 变换序列
- oracle删除users表空间
- 关于insert /*+ append*/ 各种insert插入速度比较
- role roleMapping 权限说明
- AngularJs-数据绑定
- NGUI之scroll view制作,以及踩的坑总结
- C# 序列化(Serialize)与反序列化(Deserialize)ZZ
- CentOS 7.0体验与之前版本的不同
- JS 同源策略
- impress.js学习总结
- Kinect研究
- Error Code: 1414. OUT or INOUT argument 2 for routine company.new_procedure is not a variable or NEW
- ansible之二:模块用法
- windows服务项目的 安装 卸载 查看
- 常用的 git 命令清单
- CSS之fontAwesome代替网页icon小图标
- POJ 2352 数星星
- 接收连接basic_socket_acceptor
- [Windows Azure] How to use the Table Storage Service
- 取消excel 工作保护 密码的宏