Python 웹 프레임워크(django,flask)가 mysql 데이터베이스 읽기와 쓰기 분리를 실현하는 예시
그럼 오늘 파이썬 두 프레임워크로 이 읽기와 쓰기를 분리하는 작업을 하겠습니다.
1. Django 프레임워크 읽기와 쓰기 분리
Django는 읽기와 쓰기의 분리가 매우 간단합니다. 바로 settings.py에서 컴퓨터를 데이터베이스 프로필에 넣으면 됩니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1', # ip
'PORT': 3306, # port
'USER': 'django_master', #
'PASSWORD': 'django_master', #
'NAME': 'djangobase_master' #
},
'slave': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1',
'PORT': 3307,
'USER': 'django_slave',
'PASSWORD': 'django_slave',
'NAME': 'djangobase_slave'
}
}
프로젝트의 앱 파일에db_ 만들기route.py 파일은 파일에 데이터베이스 루트 클래스를 직접 정의하여 읽기와 쓰기를 구분합니다.
""" """
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
마지막으로 우리는 settings.py에 루트 설정을 쓰면 됩니다.
DATABASE_ROUTERS = ["app001.db_router.MasterSlaveDBRouter"]
Flask 프레임워크 읽기와 쓰기 분리우선 Session 클래스를 사용자 정의하고 get_ 다시 쓰기bind 방법,self에 따라.flushing 읽기와 쓰기 동작을 판단하고 해당하는 데이터베이스를 선택하십시오.
from flask import Flask
from flask_sqlalchemy import SQLAlchemy, SignallingSession, get_state
from sqlalchemy import orm
class RoutingSession(SignallingSession):
def get_bind(self, mapper=None, clause=None):
state = get_state(self.app)
#
if self._flushing: # ,
print(" ")
return state.db.get_engine(self.app, bind='master')
else: # ,
print(' ')
return state.db.get_engine(self.app, bind='slave')
사용자 정의 SQLAlchemy 클래스,create_ 다시 쓰기session 방법, 그리고 사용자 정의 Session 클래스를 사용합니다.
class RoutingSQLAlchemy(SQLAlchemy):
def create_session(self, options):
return orm.sessionmaker(class_=RoutingSession, db=self, **options)
다음은 앱 실례를 만들고 데이터베이스 감청 파일을 설정한 다음db 연결 대상을 만들면 됩니다.
app = Flask(__name__)
#
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:[email protected]:3306/demo'
#
app.config['SQLALCHEMY_BINDS'] = {
'master': "mysql://root:[email protected]:3306/demo",
'slave': "mysql://root:[email protected]:8306/demo"
}
# ,
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# SQL
app.config['SQLALCHEMY_ECHO'] = False
#
db = RoutingSQLAlchemy(app)
그럼 이게 바로 Python의 읽기와 쓰기 분리 조작입니다. 배웠습니까?이상은Python 웹 프레임워크(django,flask)가 mysql 데이터베이스 읽기와 쓰기 분리를 실현하는 예시의 상세한 내용입니다. 더 많은python MySQL 읽기와 쓰기 분리에 관한 자료는 저희 다른 관련 글에 주목하세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.