修改数据库配置:
# 主库
'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,
}
urlpatterns = [
path('index/', views.index),
]
from django.shortcuts import HttpResponse
def index(request):
return HttpResponse('ok')
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")
python manage.py makemigraions
python manage.py migrate 应用名称 --database=配置文件数据名称的别名
python manage.py migrate app01 --database=default
主库迁移了就行了
,我做了mysql主从同步
!
往数据库内插一条数据 (设置之后访问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主从同步的!
前面选定插入数据库都是使用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'