亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Python web框架(django,flask)實現mysql數據庫讀寫分離的示例

瀏覽:3日期:2022-07-05 08:09:52

讀寫分離,顧名思義,我們可以把讀和寫兩個操作分開,減輕數據的訪問壓力,解決高并發的問題。

那么我們今天就Python兩大框架來做這個讀寫分離的操作。

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’}}

在項目的app文件中創建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 Flaskfrom flask_sqlalchemy import SQLAlchemy, SignallingSession, get_statefrom 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)

接下來創建app實例,配置數據庫的監聽文件, 然后創建db連接對象就可以了。

app = Flask(__name__)# 設置數據庫的連接地址app.config[’SQLALCHEMY_DATABASE_URI’] = ’mysql://root:mysql@192.168.105.134:3306/demo’# 設置數據庫的綁定地址app.config[’SQLALCHEMY_BINDS’] = { ’master’: 'mysql://root:mysql@192.168.105.134:3306/demo', ’slave’: 'mysql://root:mysql@192.168.105.134:8306/demo'}# 設置是否追蹤數據庫變化 一般不會開啟, 影響性能app.config[’SQLALCHEMY_TRACK_MODIFICATIONS’] = False# 設置是否打印底層執行的SQL語句app.config[’SQLALCHEMY_ECHO’] = False # 創建數據庫連接對象db = RoutingSQLAlchemy(app)

那么這些就是Python的讀寫分離操作,你學會了嗎?

以上就是Python web框架(django,flask)實現mysql數據庫讀寫分離的示例的詳細內容,更多關于python MySQL讀寫分離的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
主站蜘蛛池模板: 日韩欧美毛片免费观看视频 | 黄色爱爱视频 | 国产精品一区欧美日韩制服 | 国产麻豆剧看黄在线观看 | 国产精品综合色区在线观看 | 黄色一级片在线观看 | 久久久久久久岛国免费播放 | 亚洲婷婷丁香 | 亚洲成色 | 一级黄色毛片 | 国产精品久久久久影视青草 | 人与鲁牲交持级毛片 | 国产精品真实对白精彩久久 | 日本高清动作片www欧美 | 中国毛片免费看 | 青青操手机看 | a网站 | 欧美一级一一特黄 | 精品国产欧美一区二区三区成人 | 国产一级视频播放 | 亚洲午夜精品aaa级久久久久 | 东北普通话清晰对白 | 在线免费观看黄色网址 | 91亚洲国产在人线播放午夜 | 神马午夜51 | 中文字幕有码在线视频 | 亚洲欧美日韩另类精品一区二区三区 | 日日噜噜夜夜狠狠tv视频免费 | 亚洲欧美网址 | 久久精品视频1 | 台湾永久内衣秀130部vk | 欧美一区二区三区四区视频 | 亚洲精品网址 | 99久久国产综合精品成人影院 | 韩国免费人成在线观看网站 | 国产永久免费高清动作片www | 国产成人免费片在线视频观看 | 中国女与老外在线精品 | 国产成人一区二区三区 | 久草视频资源站 | 国产一区二区在线观看麻豆 |