Django框架(十八):从源码层面达到MySQL读写分离

下面是小凰凰的简介,看下吧!
💗人生态度:珍惜时间,渴望学习,热爱音乐,把握命运,享受生活
💗学习技能:网络 -> 云计算运维 -> python全栈( 当前正在学习中)
💗您的点赞、收藏、关注是对博主创作的最大鼓励,在此谢过!
有相关技能问题可以写在下方评论区,我们一起学习,一起进步。
后期会不断更新python全栈学习笔记,秉着质量博文为原则,写好每一篇博文。

1、settings.py

修改数据库配置:

# 主库
'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '101.132.167.242',
        'PORT': 33307,
    },
# 从库
'slave': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '101.132.167.242',
        'PORT': 33306,
    }

2、urls.py
urlpatterns = [
    path('index/', views.index),
]
3、views.py
from django.shortcuts import HttpResponse

def index(request):
    return HttpResponse('ok')
4、models.py
from django.db import models

class Book(models.Model):
    title=models.CharField(max_length=32)
    price=models.IntegerField()
    ss=models.CharField(max_length=32,default="66")
5、数据库迁移
python manage.py makemigraions
python manage.py migrate 应用名称 --database=配置文件数据名称的别名
python manage.py migrate app01 --database=default

主库迁移了就行了,我做了mysql主从同步

6、使用using手动读写分离

往数据库内插一条数据 (设置之后访问index页面,就会往book表中插入一条数据)

from django.shortcuts import render,HttpResponse
from app01.models import Book
# Create your views here.
def index(request):
    # 往主库里插一条数据
    Book.objects.using("default").create(title="xx",price=10)
    return HttpResponse('ok')

最后主从库都插入了数据,因为我最开始就做了MySQL主从同步的!

7、读写分离自动化

前面选定插入数据库都是使用using,还有一种自动操作的方式

BASE_DIR目录下创建router.py文件

class Router1:
    def db_for_read(self, model, **hints):    #读取数据只用从库
        """
        Attempts to read auth models go to auth_db.
        """
        return 'slave'

    def db_for_write(self, model, **hints):    #写入数据只用主库
        """
        Attempts to write auth models go to auth_db.
        """
        return 'default'

在setting.py文件配置 DATABASE_ROUTERS = ['router.Router1',]
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凤求凰的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值