首页 > 数据库技术 > 详细

使用django做mysql读写分离

时间:2020-01-15 11:28:31      阅读:56      评论:0      收藏:0      [点我收藏+]

一、先创建一个django项目

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 = [
    url(r^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 app名称 --databse=配置文件数据名称的别名

技术分享图片

 

主库和从库都能查询用django创建的表

技术分享图片

 

6.往数据库内插一条数据 (设置之后访问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)

主从库都插入了数据

 

技术分享图片

 

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

 在根目录下创建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‘,]

技术分享图片

 

 以后往主库中插入数据或者从库中读取数据就不用再指明使用哪个数据库

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

使用django做mysql读写分离

原文:https://www.cnblogs.com/wangcuican/p/12195441.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!