首页 > 数据库 >django 配置多数据库进行读写分离

django 配置多数据库进行读写分离

时间:2024-11-08 22:20:05浏览次数:1  
标签:slave default 读写 db django DBRouter 数据库

DATABASES配置

在Django的配置文件 setting.py 中的DATABASES参数中,添加多个数据库的配置信息。每个数据库都需要指定ENGINE(数据库引擎)和NAME(数据库名称)。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'master_db',
        'USER': 'master_user',
        'PASSWORD': 'master_password',
        'HOST': 'localhost',
        'PORT': '3306',
    },
    'slave': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'slave_db',
        'USER': 'slave_user',
        'PASSWORD': 'slave_password',
        'HOST': 'localhost',
        'PORT': '3307',
    }
}

方式一:自选读写数据库对象

在需要进行读写操作的地方,可使用.using('default')方法来指定使用哪个数据库进行操作('default'是配置文件中DATABASES定义的数据库对象)。

result = My_Model.objects.filter(id=5).using('default') # .using('slave')

方式二:自动读写分离(推荐)

(一)创建一个Py文件,命名为db_router.py,并在其中定义一个类DBRouter,继承自django.db.utils.BaseDatabaseRouter,该类用于自动路由数据库。在DBRouter类中,需要实现db_for_read()和db_for_write()方法,这两个方法分别用于决定读操作和写操作使用的数据库。

class DBRouter(object):
    def db_for_read(self, model, **hints):
        # 多个从库 ['db1','db2','db3'] ---- 负载 --- random
        
        # 自读数据库
        return 'slave'

    def db_for_write(self, model, **hints):
        # 可写入的数据库
        return 'default'

(二)在Django的配置文件 setting.py 的DATABASE_ROUTERS中,指定使用自定义的DBRouter类来进行数据库路由。

DATABASE_ROUTERS = ['myapp.db_router.DBRouter']

完成!

标签:slave,default,读写,db,django,DBRouter,数据库
From: https://www.cnblogs.com/lanjianhua/p/18536039

相关文章

  • SpringBoot校园跳蚤市场管理系统i940j(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着校园内二手交易的日益频繁,一个高效、便捷的校园跳蚤市场管理系统显得尤为重要。该系统旨在为学生提供一个安全、可靠的二手交易平......
  • 【计算机毕业设计选题推荐】基于springboot高校网上缴费综合务系统的设计与实现 【附
    ✍✍计算机毕设编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 向量数据库 PieCloudVector 进阶系列丨打造以 LLM 为基础的聊天机器人
    本系列前两篇文章深入探讨了PieCloudVector在图片和音频数据上的应用之后,本文将聚焦于文本数据,探索PieCloudVector对于文本数据的向量化处理、存储以及检索,并最终结合LLM打造聊天机器人的全流程。在自然语言处理任务中涉及到大量对文本数据的处理、分析和理解,而向量数据库......
  • (开题报告)django+vue校园二手物品交易平台源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于校园二手物品交易平台的研究,现有研究多侧重于传统交易模式或者单一技术的应用。专门针对django+vue技术构建校园二手物品交易平......
  • 数据库设计心得
    数据库设计是软件开发中至关重要的一环,优秀的数据库设计可以提高系统的性能、可维护性和可扩展性。以下是我的一些数据库设计的心得:理解业务需求在开始设计数据库之前,深入理解业务需求是第一步。与相关利益相关者(如产品经理、用户和开发团队)进行沟通,确保了解数据的使用场景、数......
  • 【MySQL】数据库备份详解
    一、引言1.1数据库备份的重要性二、MySQL数据库备份的基础知识2.1备份类型2.2备份工具与方法三、MySQL数据库备份的实施步骤3.1环境准备3.2选择合适的备份工具与方法3.3执行备份3.4验证备份3.5存储与管理备份四、MySQL数据库恢复流......
  • 劫持微信聊天记录并分析还原 —— 数据库结构讲解(四)
    本工具设计的初衷是用来获取微信账号的相关信息并解析PC版微信的数据库。程序以Python语言开发,可读取、解密、还原微信数据库并帮助用户查看聊天记录,还可以将其聊天记录导出为csv、html等格式用于AI训练,自动回复或备份等等作用。下面我们将深入探讨这个工具的各个方面及其......
  • JAVA毕业设计198—基于Java+Springboot+vue3的健身房管理系统(源代码+数据库)
    毕设所有选题:https://blog.csdn.net/2303_76227485/article/details/131104075基于Java+Springboot+vue3的健身房管理系统(源代码+数据库)198一、系统介绍本项目前后端分离(可以改为ssm版本),分为用户、管理员两种角色1、用户:注册、登录、公告、论坛交流、健身课程购买......
  • 劫持微信聊天记录并分析还原 —— 合并解密后的数据库(三)
    本工具设计的初衷是用来获取微信账号的相关信息并解析PC版微信的数据库。程序以Python语言开发,可读取、解密、还原微信数据库并帮助用户查看聊天记录,还可以将其聊天记录导出为csv、html等格式用于AI训练,自动回复或备份等等作用。下面我们将深入探讨这个工具的各个方面及......
  • Navicat:数据库备份
    #Navicat#数据库备份原创OpsEye前文我们简单介绍了Navicat的功能和使用场景,本文我们将详细的讲解使用Navicat进行数据库备份和还原的相关操作。Navicat工具下载下载官网:https://www.navicat.com.cn/download/navicat-premium根据实际系统情况,选择下载。我们这里是windo......