当前位置:Gxlcms > 数据库问题 > django中使用多个数据库,跨库查询

django中使用多个数据库,跨库查询

时间:2021-07-01 10:21:17 帮助过:92人阅读

DATABASES = {
     default: {
        # ‘ENGINE‘: ‘django.db.backends.mysql‘,
        ENGINE: common_framework.utils.mysql,
        NAME: choice,
        USER: ad_user,
        PASSWORD: ad_pass,
        HOST: 127.0.0.1,
        PORT: 3306,
        SIZE: 10,
    },

    platform: {
        # ‘ENGINE‘: ‘django.db.backends.mysql‘,
        ENGINE: common_framework.utils.mysql,
        NAME: test,
        USER: ad_user,
        PASSWORD: ad_pass,
        HOST: 192.168.10.179,
        PORT: 3306,
        SIZE: 10,
    }
}

二、数据库路由

  在settings目录同级下新建一个database_router.py文件

# -*- coding: utf-8 -*-
from django.conf import settings
from event.models import Event
DATABASE_MAPPING = settings.DATABASE_APPS_MAPPING
class DataBaseAppsRouter(object):

    def db_for_read(self, model, **hints):
        """"Point all read operations to the specific database."""
        if model._meta.app_label in DATABASE_MAPPING:
            if model == Event:
                return "default"
            else:
                return DATABASE_MAPPING[model._meta.app_label]
        return None
    def db_for_write(self, model, **hints):
        """Point all write operations to the specific database."""
        if model._meta.app_label in DATABASE_MAPPING:
            return DATABASE_MAPPING[model._meta.app_label]
        return None
    # def allow_relation(self, obj1, obj2, **hints):
    #     """Allow any relation between apps that use the same database."""
    #     db_obj1 = DATABASE_MAPPING.get(obj1._meta.app_label)
    #     db_obj2 = DATABASE_MAPPING.get(obj2._meta.app_label)
    #     if db_obj1 and db_obj2:
    #         if db_obj1 == db_obj2:
    #             return True
    #         else:
    #             return False
    #     return None

三、跨表查询(using方法) 

EventUserAnswer.objects.using("platform").filter(user=user, team=request.user.team, status=1).first():

django中使用多个数据库,跨库查询

标签:word   opera   meta   turn   EAP   个数   mode   com   hint   

人气教程排行