因为需要基于一个老的业务系统进行相关开发工作、老系统使用的数据库是Oracle11G。在开发过程中不方便对老系统的数据库进行改动、而我们又需要增加用户登录、系统日志、权限管理等功能。需要在新增数据表、那么在Django中我们如何来操作呢?
Django版本:1.11.29(这里为了适配Oracle11G数据库)
MySQL版本:5.6.49(新增数据表全部放在MySQL数据库中)
多数据库配置
下面我们一起来看看如何在Django中进行多数据库路由配置。首先我们去新建项目的setting.py文件里面配置多个数据库引擎(项目创建过程略过)。
我们把MySQL数据库作为主数据库、把Oracle数据库作为从数据库(这里的主从数据库引擎可以是一样的、也可以是不一样的、不同的数据库引擎配置请各位小伙伴自行百度)。这里我们链接的Oracle数据库是老业务系统的数据库(只读权限)、而MySQL数据库是我们需要新增数据表的数据库(读写权限)。
多数据库路由配置
然后我们去Django项目目录里面新增一个settings目录、在settings目录下面新增一个router.py文件内容如下:
这里我们定义了一个通用函数Slave_Router,在Slave_Router中我们定义了read、write、relation、migrate几个方法。我们把从老业务系统反向生成的Model类全部放在 reservation APP 下面。通过Slave_Router来判断如果当前访问的APP是 reservation 就去访问slave数据库(也就是Oracle数据库)、反之则去访问 default 数据库(也就是MySQL数据库)。通过这种方式、我们就实现了在Django下面去访问多个数据库的配置方式。
注:这一部分的内容其实在官方文档里面写的也挺清楚的、感兴趣的小伙伴可以自动取官方文档查看原原档。