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中进行控制
- 当外键关联的表数据量太大时,不建议关联外键,因为从表每次插入数据的时候都会查询一遍主表,会对性能带来影响