开发者社区> 问答> 正文

Django ORM中如何设置读写分离?

Django ORM中如何设置读写分离?

展开
收起
珍宝珠 2019-11-22 12:54:58 1670 0
1 条回答
写回答
取消 提交回答
  • 步骤一:写配置文件
    class Router1:
      #  指定到某个数据库读数据
        def db_for_read(self, model, **hints):
            if model._meta.model_name == 'usertype':
                return 'db1'
            else:
                return 'default'
       
      # 指定到某个数据库写数据
        def db_for_write(self, model, **hints):
            return 'default'
    
    再写到配置
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        },
        'db1': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    DATABASE_ROUTERS = ['db_router.Router1',]
    
    
    步骤二:手动使用queryset的using方法
    def index(request):
        models.UserType.objects.using('db1').create(title='普通用户')
      # 手动指定去某个数据库取数据
        result = models.UserType.objects.all().using('db1')
        return HttpResponse('...')
    
    2019-11-22 12:55:11
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载