# 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