阅读背景:

python 其实不用框架你也可以实现ORM

来源:互联网 
"""
ORM思路归纳:

    1、将每张表映射成不同的表类,一个表类映射一张表。表类的类属性
        需要有表名、字段名
        将每个字段类型映射为字段类型类,一个字段类型类映射一个类
        字段类实例化需要传入有字段名、字段类型、是否是主键、默认值
        等参数,其中除字段名外其他参数可设置默认值
    2、每个表类都有相同的基础属性,如表名,主键字段,增删改查方法,
        那么由此就可以抽离出Models基类,相同属性和方法同一抽到基类,
        不涉及需要每个表区别属性的方法我们把它抽为基类类方法。
    3、考虑到一条数据库数据需要产生一个对象,用pymysql查询得到得可以
        是字典类型,那么我们可以将基类Models继承dict,用__setattr__
        将字段转换为伪对象属性操作,用__getattr__对属性取值
        由基类查询一条或者多条数据的类方法,将得到的记录本身传给表类
        自身实例化得到对象,用__setattr__将字段作为对象属性,这样一
        个对象就可以映射一条数据
    4、为了更好的实现对数据库表的映射,我们需要创建元类来对定义的表类
        的控制,如一个表只且只有一个主键,规范每个表类的属性名称,比如
        表名、主键名,其他字段集合
    5、另外要实现对数据库操作提交,这部分功能不适合做在基类表类中,做在
        表类中会让表类臃肿且逻辑不清,我们将其专门定义一个数据库连接类,
        表这一部分就负责实现功能,具体对数据库通信操作由数据库连接类去完成


ORM思路归纳:

    1、将每张表映射成不同的表类,一个表类映射一张表。



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: