ORM (Object Relational Mapping)作为一个后端框架的构建的组成部分, 主要实现对象对关系型数据库的映射关系。可以无需再去编写原生sql,取代代之的是基于面向对象的思想去编写类、对象、调用相应的方法等,ORM会将其转换/映射成原生SQL然后交给pymysql执行的。
orm的通常使用顺序是, 先编写model 然后通过model 生成迁移文件 “migrations” 再通过migrations 生成对应的数据表。数据表的字段条目与model 的属性可以做到一一对应。 这就通常呈现在大众面前的orm功能。
但作为一个合格的orm产品, 如果只是正向的通过 object 向 relational 映射,使用就会受到局限, 不可能在每一次对数据库的操作都有所对应的model存在。在此情况下, 就可以引入反射的概念, 即反向映射, 走relational -> object 的方式。
在python 的语言环境下, 常用的orm 产品的反射体现:
1. django orm 小编并未找到django 框架下的orm的动态反射方式, 但可以参考 inspectdb 来完成通过数据库反射出class来实现。
2. sqlalchemy 中, 提供Automap 来完成动态的反射。