ORM编程
ORM(object-relational mapping)对象关系映射 作用:在关系型数据库和业务实体对象之间做一个映射,方便在开发中,不需要再使用复杂的sql语句,只需要简单操作对象的属性与方法。 所有ORM具备3方面基本能力:映射技术、CRUD操作、缓存优化。每种编程语言都具有自己的ORM库,java 的Hibernate、IBATIS;C#的Grove LINQ; Python 的 SQLAlchemy
1、映射技术
面向对象是从软件工程的基本原则(如耦合、聚合、封装)的基础由来 关系型数据库是从数学理论上的基础发展而来。
ORM库需解决三个问题:
数据类型映射:将数据库的类型映射为编程语言自身的类型;
类映射:将数据表定义映射为编程语言自身的类;
关系映射:将数据库中基于外键的关系连接转换为编程语言中基于对象引用的关系连接。
2、CRUD操作
C–Create(增加)
R–Retrieve(读取,重新得到数据)
U–Update(更新)
D–Delete(删除)
在SQL中:insert,select, update,delete四种语句实现CRUD
ORM自动实现以下操作:
将这些调用转换为SQL语句;
通过数据库引擎发送个给数据库执行;
将数据库返回的结果记录用ORM映射技术转换为类对象。
3、缓存优化
将从数据库中查询到的数据以类对象形式保存在本地内存中,以便之后再用时随时抽取。
在真正需要读取查询结果时才执行数据库的select操作,而不是在ORM查询命令执行时查询数据库。
4、用peewee进行ORM数据库编程
思路:
导入需要的包:peewee,建立一个数据库引擎对象db
定义一个ORM基类:BaseModel(),建立SQLite连接
类型映射:定义一些数据类型
表映射:定义两个对象类:course, teacher
关系映射:使用ForeignKeyField 设置与course的连接关系,其中的参数:to_field用于指定被连接的字段名,related_name参数对该关系赋予了一个名字