day65 自写ORM框架

ORM框架

ORM 对象关系映射,指的是对象和数据库之间的关系

为什么做映射?可以避免重复编写sql语句

ORM可以帮我们生成sql语句,执行,并获取结果,再转为对象

object --> databases --> object

手撸ORM框架

之所以写,是为了更好的理解框架的实现原理

我们自动生成那些sql语句

能够做的事情

创建表的语句

增删改查

什么时候要创建表

一个项目对应 一个数据库

一个类对应一个表

一个对象对应一条记录

一个属性对应一个字段

我们要达到的目的:

  • 当在项目中创建一个类时就根据类型的信息自动生成表
    • 使用元类来控制类的创建过程
    • 通过init方法,获知类即将创建,生成一个建表语句
create table user1(
    id int primary key auto_increment,
    name char(20),
    pwd char(20),
    vip tinyint default 0,
    extra float,
    utype tinyint default 0,
    islock tinyint default 0
    );
  • 当我们创建一个对象并保存时就根据对象的信息自动生成一条记录
    • 给对象增加存储方法
  • 当我们要修改某一个对象的属性时,自动生成修改的语句
    • 给对象提供一个更新方法
  • 当我们要删除的时候,自动生成删除的语句
    • 给对象提供一个删除方法
  • 当我没们需要获取某一类的数据时,自动生成查询语句,并将查询语句转为对象
    • 给类提供一个用于获取对象的方法

datetime 和 timestamp的区别

注意:

  • mysql中的各种约束,也可以在python中进行控制
  • 当外键关联的表数据量太大时,不建议关联外键,因为从表每次插入数据的时候都会查询一遍主表,会对性能带来影响

猜你喜欢

转载自www.cnblogs.com/lucky75/p/11227734.html