实际上,起初使用了pymysql,但是发现维护更加麻烦,并且仍然有代码注入的风险,因此我只是使用了ORM框架。
ORM是对象关系映射器,可以简单地理解为数据库表和Python类之间的映射。通过操作Python类,可以间接操作数据库。
Python的ORM框架以Sqlalchemy和Peewee而闻名。我在这里没有比较它,而只需解释一些个人使用Sqlalchemy,希望能帮助朋友。
初始化工作
通常,ORM框架具有一些初始化工作,例如数据库连接,定义基本映射等。
以MySQL为例,创建数据库连接只需要传递到DSN字符串中。在它们之后,Echo指示是否输出相应的SQL语句,这对调试更有帮助。
个人设计
对我个人而言,在介绍ORM框架时,我的项目将参考以下设计的MVC模式。在它们的情况下,该模型存储了一些数据库模型,即由数据库表映射的Python类;Model_op存储与每个模型相对应的操作,也就是说,添加删除以检查和修改;层不需要关心模型层即可实现分离。
地图声明(模型简介)
如果我们有这样的测试桌,请拿栗子
在ORM框架中,映射的结果是下面的Python类
第一的
我们可以看到pyormmodel继承了基类。该课程是Sqlalchemy提供的基类。它将检查我们声明的Python课程。我把它放在base_model中。
第二
每个Python类都必须包含__TableEname__属性,否则找不到相应的表。
第三
创建数据表有两种方法。第一个当然是在MySQL中手动创建的。只要您的Python类定义没有问题,就可以正常操作;第二个是通过ORM框架创建的,例如以下
创建效果:
第四
关于字段属性
1. primary_key和自动启动是更好的理解,即MySQL的主要和增量属性。
2.如果它是int类型,则不需要指定长度,如果它是varchar类型,则必须指定它。
3. mysql中的null和null对应
4.关于默认值和server_default:默认值表示ORM框架级别的默认值,也就是说,如果未分配字段,则将使用我们定义的默认值;server_default表示数据库级别的默认值,即DDL SpectionDefault关键字。
会话简介
SQLalchemy文档中提到,数据库的添加和删除是通过会话执行的。
如上所述,我们可以看到,对于每个操作,我们都需要获取,提交和释放。这太多余和麻烦了,因此我们通常执行一层包装。
1.使用上下文管理器的方法
治疗会议和结束的异常,这部分几乎与参考文章一致。
2.模型和dict转换
将两种方法添加到pyormmodel,以在模型和dict之间转换
3.数据库操作安装
与参考文章不同,我直接致电会话,因此指挥官无需注意模型层并减少耦合。
4. CIMC
以上是该共享的所有内容。如果您想了解更多信息,请转到公共帐户:Python编程学习圈,每日干货共享
原始:https://juejin.cn/post/7096683234573942792