ORM-对象关系映射
通过ORM将编程语言的对象模型和数据库的关系模型建立映射,让编程语言代替SQL对数据库进行操作;ORM使用对象对数据库的操作进行的封装,在开发的过程中,可以不使用SQL,值需要面向对象编程,与数据对象直接交互,不用关系底层数据库。Python常用的ORM有SQLAlchemy,Django's ORM
- 数据库的表(table) --> 类(class)
- 记录(record,行数据)--> 对象(object)
- 字段(field)--> 对象的属性(attribute)
优点:
- 数据模型类都在一个地方定义,容易更新和维护,利于重用代码;
- ORM有现成的工具,很多功能可以自动完成,比如数据消毒,预处理,事务,自动生成表格;
- 基于ORM的业务代码比较简单,代码量比较少,可读性比较强
-
在数据库表名或字段名发生变化时,只需修改模型类的映射,无需修改数据库操作的代码
(相比SQL的话,可能需要同步修改涉及到的每一个SQL语句)
- 避免编写性能不佳的SQL
- 防止SQL注入攻击
缺点
- ORM无法满足复杂的查询,要么无法表达,要么性能不足
- 开发者无法了解数据库底层操作,无法定制特殊需求的SQL