ORM是什么

摘自维基百科:

Object-relational mapping (ORM, O/RM, and O/R mapping) in computer science is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language.

常规的方法是根据关系数据库表结构, 在程序中定义相应的对象模型, 如类. 但是这种做法既要维护代码逻辑层面, 还要维护存储层面. 表结构的改变也会带来很多的变动. ORM就是一个中间层, 封装了数据库底层的操作(如CRUD), 直接在代码层面定义数据模型, 进而方便操作, 因为封装了数据库底层API, 所以对于数据库的更换也不会影响到代码层面.

这篇博客总结的挺不错的, 包括图解.

StackOverflow上还有两个关于什么是ORM, 以及其作用的讨论:

这里有两个反对的讨论, 还没去看:

SQLAlchemy

Flask w/ SQLAlchemy

其它参考