SQLAlchemy是一种常用的ORM(Object-Relational Mapping)框架,我们初始使用的方式一般如下:
from
每次对Model的一次操作,需要经历9个步骤,比较繁琐,存在如下几个问题:
1: 如果要连接一个新的数据库,对一个model的一次操作从第3步开始都需要重写一次,比较烦
2:针对session的提交、异常回滚、关闭Model操作都要关心,造成了冗余代码
针对上面存在的问题,我们想有没有一种方式能实现:
1:如果代码里需要新增一个数据库访问,仅仅就是加下这个数据库的配置就行,数据库连接自动帮我创建好了
2:有一个统一的地方帮我处理session的提交、异常回滚、关闭,我完全不需要去关注这些重复的操作
3:在代码里拿到这个Model后就可以操作了,连session都不用关心
1:初始化数据库连接,将连接放在全局变量engines里面。
from
2:利用上下文管理机制,处理session的异常回滚和关闭,简化代码实现。
from
3:利用decorator和第2步定义的上下文管理器,管理session的创建,回滚和关闭
def
4:创建一个BaseModel的基类,利用3步中的class_dbsession对常用db操作进行封装
class
5:基于BaseModel基类创建业务Model类
from
6:Model类的使用
# 新增
t = Test(id=1, name='test')
t.add()
# 删除
Test.delete([Test.id == 1])
# 修改
Test.update({'name': 'haha'}, [Test.id == 1])
# 查找
Test.query([Test.name], filter=[Test.id == 1])