데이터베이스 읽기/쓰기 분리 구성 Django 데이터베이스 읽기/쓰기 분리

8003 단어
Django 데이터베이스 읽기/쓰기 분리 구성
django가 데이터베이스 조작을 할 때 데이터를 읽는 것과 쓰는 것(증가, 삭제, 수정)은 각각 다른 데이터베이스에서 조작할 수 있다.
1. 프로필에 slave 데이터베이스 설정 추가
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'ssxrh',
        'PASSWORD': 'ssxrh',
        'NAME': 'meiduo_all'
    },
    'slave': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',
        'PORT': 8306,
        'USER': 'root',
        'PASSWORD': 'mysql',
        'NAME': 'meiduo_mall'
    }
}

2. 데이터베이스 작업의 루트 배달 클래스 만들기
meiduomall/utils에서db 만들기router.py
class MasterSlaveDBRouter(object):
    """           """

    def db_for_read(self, model, **hints):
        """    """
        return "slave"

    def db_for_write(self, model, **hints):
        """    """
        return "default"

    def allow_relation(self, obj1, obj2, **hints):
        """        """
        return True
class MasterSlaveDBRouter(object):
    """           """

    def db_for_read(self, model, **hints):
        """    """
        return "slave"

    def db_for_write(self, model, **hints):
        """    """
        return "default"

    def allow_relation(self, obj1, obj2, **hints):
        """        """
        return True
3. 읽기 및 쓰기 분리 라우팅 구성
프로파일에 추가
#       
DATABASE_ROUTERS = ['meiduo_mall.utils.db_router.MasterSlaveDBRouter']

좋은 웹페이지 즐겨찾기