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.
- O (Object) 表示对象, 是指object-oriented (OO) objects. 即在程序中根据数据表结构定义的对象模型.
- R (Relational) 关系数据模型, 即关系数据库的表结构
- M (Mapping) 将O与R之间建立映射关系
常规的方法是根据关系数据库表结构, 在程序中定义相应的对象模型, 如类. 但是这种做法既要维护代码逻辑层面, 还要维护存储层面. 表结构的改变也会带来很多的变动. ORM就是一个中间层, 封装了数据库底层的操作(如CRUD), 直接在代码层面定义数据模型, 进而方便操作, 因为封装了数据库底层API, 所以对于数据库的更换也不会影响到代码层面.
这篇博客总结的挺不错的, 包括图解.
StackOverflow上还有两个关于什么是ORM, 以及其作用的讨论:
这里有两个反对的讨论, 还没去看:
SQLAlchemy
- SQLAlchemy Doc
- Overview
- Object Relational Tutorial 必看
- Relationship Configuration
- SQLAlchemy 0.7学习笔记 基于0.7, 参考的是Object Relational Tutorial, 总结的不错.
- SQLAlchemy参考 总结的很详细, 好资料
Flask w/ SQLAlchemy
- Flask-SQLAlchemy 对SQLAlchemy的封装, 简化了很多操作.
- Declaring Models 介绍了简单的/一对多/多对多三种模型
- SQLAlchemy in Flask 介绍了原生的SQLAlchemy在Flask中的操作