配置Django实现数据库读写分离

配置Django实现数据库读写分离

django在进行数据库操作的时候,读取数据与写数据(增、删、改)可以分别从不同的数据库进行操作。

1. 在配置文件中增加slave数据库的配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '10.211.55.5',
        'PORT': 3306,
        'USER': 'meiduo',
        'PASSWORD': 'meiduo',
        'NAME': 'meiduo_mall'
    },
    'slave': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '10.211.55.5',
        'PORT': 8306,
        'USER': 'root',
        'PASSWORD': 'mysql',
        'NAME': 'meiduo_mall'
    }
}

2.创建数据库操作的路由分发类

在项目适当位置中创建db_router.py

class MasterSlaveDBRouter(object):
    """数据库主从读写分离路由"""

    def db_for_read(self, model, **hints):
        """读数据库"""
        return "slave"

    def db_for_write(self, model, **hints):
        """写数据库"""
        return "default"

    def allow_relation(self, obj1, obj2, **hints):
        """是否运行关联操作"""
        return True

3. 配置读写分离路由

在配置文件settings.py中增加:

配置读写分离
DATABASE_ROUTERS = ['meiduo_mall.utils.db_router.MasterSlaveDBRouter'] # 示例路径

Original: https://www.cnblogs.com/minqiliang/p/16753276.html
Author: minqiliang
Title: 配置Django实现数据库读写分离

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612810/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Facade 外观(结构型)

    Facade 外观 (结构型) 一:描述: Facade 外观模式是为子系统至客户端之间提供简单的一致的接口,来降低耦合度。 二:模式图 三:实现代码简单例子: 1 、业务模块; …

    数据库 2023年6月11日
    0106
  • Wireshark记录总结

    一. wireshark介绍说明:网络封包分析开源软件功能:截取网络封包,使用WinPCAP作为接口,直接与网卡进行数据报文交换 二、wireshark安装及使用【出处:jack_…

    数据库 2023年6月14日
    095
  • Servlet规范

    servlet规范 一。介绍1.它是javaee里面的一种规范。2.作用:1)在servlet规范中指定了动态资源文件的开发步骤2)在s…

    数据库 2023年6月11日
    059
  • MySQL变量、流程控制和游标

    变量、流程控制和游标 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果的数据 系统变量 变量由系统定义,属于服务器级别 […

    数据库 2023年5月24日
    073
  • Redisson

    ​ Redisson是架设在Redis基础上的一个Java驻内存数据网格(In-Memory Data Grid)。充分的利用了Redis键值数据库提供的一系列优势,基于Java实…

    数据库 2023年6月6日
    093
  • Linux 学习笔记2(未完待续)

    Linux 学习笔记2 学习Linux的原因 Linux刚面世时并没有图形界面,所有操作全靠命令完成,如磁盘操作、文件读写、目录操作、进程管理、文件权限; 在职场中,大量的服务器维…

    数据库 2023年6月14日
    082
  • git本地分支推送至远程分支

    1、本地任意盘→新建文件夹,例:我新建文件夹名称是:E:\git 2、打开git文件夹,文件夹内鼠标右击选择 Git Bash Here 3、克隆远程分支到本地分支【远程分支移动到…

    数据库 2023年6月14日
    0165
  • 19-TCP、UDP的区别和应用场景

    可靠性TCP 提供交付保证,这意味着一个使用TCP协议发送的消息是保证交付给客户端的,如果消息在传输过程中丢失,那么它将重发。UDP是不可靠的,它不提供任何交付的保证,一个数据包在…

    数据库 2023年6月16日
    0102
  • gauss杀进程

    1)查询当前所有连接的状态 select datname,pid,application_name,state from pg_stat_activity; 2)关闭当前state…

    数据库 2023年6月16日
    098
  • MySQL 基础

    MySQL 基础 SQL 介绍 SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据…

    数据库 2023年5月24日
    096
  • 程序员“迷惑代码”大赏

    谈到程序员,对于外行人来说一贯的印象就是格子衫大裤衩外加人字拖,蓬头(秃头)垢面黑眼圈,还有就是”人傻钱多死得快”🤣,这是外界对程序员固有的思想,但是作为新…

    数据库 2023年6月11日
    099
  • 在启动mysql时,执行service mysqld start报错,不能进入Mysql

    在启动mysql时,执行 service mysqld start报错,不能进入Mysql执行 systemctl restart mysqld.service 成功进入! Ori…

    数据库 2023年6月11日
    096
  • Linux常用命令总结(二)

    1.Netstat 命令 用于显示各种网络相关信息,如网络连接,路由表,接口状态等待。 例如 统计IP110.120.119.XXX的连接数: netstat | grep 110…

    数据库 2023年6月16日
    090
  • 【黄啊码】教你用python画冰墩墩

    python;gutter:true; import turtle</p> <p>turtle.title('PythonBingDwenDwen…

    数据库 2023年6月16日
    067
  • 浅谈多线程中数据的绑定和赋值

    我们知道,微软的.NET控件做了大量的工作,用起来还是不错的,一般的数据绑定或者赋值比较简单。如下所示 文本赋值: txtTest.Text = “abc”…

    数据库 2023年6月11日
    070
  • Dubbo源码(八)-负载均衡

    前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)…

    数据库 2023年6月11日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球