# 0 主从搭建好了
# models.py
from django.db import models
class Book(models.Model):
name = models.CharField(max_length=32)
price = models.DecimalField(max_length=5, decimal_places=2)
#1 在setting中配置
DATABASES = {
# 主库
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'lqz1',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '101.133.225.166',
'PORT': 33307,
},
# 从库
'db1': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'lqz1',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '101.133.225.166',
'PORT': 33306,
},
}
# 2 手动指定
####手动来做
# 向default库写,主库
# res=models.Book.objects.using('default').create(name='水浒传',price=33.4)
# 去从库查
# res=models.Book.objects.using('db1').all().first()
# print(res.name)
# 3 自动指定(写router和配置setting)
class Router1:
def db_for_read(self, model, **hints):
return 'db1'
def db_for_write(self, model, **hints):
return 'default'
# 在setting中注册
# 注册一下
DATABASE_ROUTERS = ['db_router.Router1',]
# 4 以后只要是写操作,就会用default,只要是读操作自动去db1
# 5 更细粒度()
class Router1:
def db_for_read(self, model, **hints):
if model._meta.model_name == 'book':
return 'db1'
else:
return 'default'
def db_for_write(self, model, **hints):
return 'default'
# 6 在数据库迁移时,可以指定把哪个app的表结构迁移到哪个库
python manage.py migrate app01 --database=default