【愚公系列】2022年02月 Python教学课程 60-Django框架之数据库读写分离的配置

举报
愚公搬代码 发表于 2022/02/06 22:34:47 2022/02/06
【摘要】 前言 1.读写分离的概念为了确保数据库产品的稳定性,很多数据库拥有双机热备功能。也就是,第一台数据库服务器,是对外提供增删改业务的生产服务器;第二台数据库服务器,主要进行读的操作。 2.读写分离的优点提高读写性能数据写入和读取是在不同的服务器上进行的,而且可以通过增加从服务器来提高数据库的读取性能提高数据安全因为数据已复制到从服务器,可以在从服务器上备份而不破坏主服务器相应数据 一、Dja...

前言

1.读写分离的概念

为了确保数据库产品的稳定性,很多数据库拥有双机热备功能。也就是,第一台数据库服务器,是对外提供增删改业务的生产服务器;第二台数据库服务器,主要进行读的操作。

2.读写分离的优点

提高读写性能

数据写入和读取是在不同的服务器上进行的,而且可以通过增加从服务器来提高数据库的读取性能

提高数据安全

因为数据已复制到从服务器,可以在从服务器上备份而不破坏主服务器相应数据

一、Django配置读写分离

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

在Django的配置文件settings.py中,DATABASES中添加代码如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',  # 主服务器的运行ip
        'PORT': 3306,   # 主服务器的运行port
        'USER': 'django',  # 主服务器的用户名
        'PASSWORD': 'django',  # 主服务器的密码
        'NAME': 'djangobase'   #  数据表名
    },
    'slave': {
        'ENGINE': 'django.db.backends.mysql',  
        'HOST': '127.0.0.1',
        'PORT': 8306,
        'USER': 'django_slave',
        'PASSWORD': 'django_slave',
        'NAME': 'djangobase_slave'
    }
}

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

在项目的utils中创建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.配置读写分离路由

在配置文件中增加

 # 配置读写分离
DATABASE_ROUTERS = ['项目名.utils.db_router.MasterSlaveDBRouter']
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。