前言

随着项目越来越大,采用写原生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。可以非常轻松的切换数据库。

ORM的实现过程

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

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

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

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

最新文章

  1. c++左值和右值
  2. web_submit_data函数上传图片
  3. Java编程思想(Chapter2、4、6)
  4. [Asp.net]Uploadify所有配置说明,常见bug问题分析
  5. C#的path.GetFullPath 获取上级目录实现方法
  6. 2016年12月23日 星期五 --出埃及记 Exodus 21:18
  7. Ado.net连接池 sp_reset_connection 概念
  8. 如何生成a1,a2,a3,a4这样的变量名
  9. Laravel5.1控制器小结
  10. 包装类-Character
  11. elasticsearch-head 的搭建
  12. SmartThreadPool
  13. public animal this[int index]|索引器的使用
  14. Storm集群的搭建
  15. mmap。
  16. RunTime.getRuntime().exec()运行脚本命令介绍和阻塞
  17. ecshop3.6商品如何按照销量排序
  18. 20170422早会训话,ps:程序出现两次BUG,领导很生气
  19. nginx地址代理(2)
  20. jupyter nootbook本地使用指南

热门文章

  1. python常用数据处理库
  2. PTA 求链式表的表长
  3. sqli-labs系列——第四关
  4. C# 8 - Nullable Reference Types 可空引用类型
  5. 【原创】Linux虚拟化KVM-Qemu分析(十一)之virtqueue
  6. java例题_11 求不重复数
  7. SQL注入靶场实战-小白入门
  8. TypeError: myMethod() takes no arguments (1 given) Python常见错误
  9. 学会使用 Mysql show processlist 排查问题
  10. 高可用负载均衡 haproxy+keepalived