电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python web框架(django,flask)實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)讀寫(xiě)分離的示例

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

讀寫(xiě)分離,顧名思義,我們可以把讀和寫(xiě)兩個(gè)操作分開(kāi),減輕數(shù)據(jù)的訪問(wèn)壓力,解決高并發(fā)的問(wèn)題。

那么我們今天就Python兩大框架來(lái)做這個(gè)讀寫(xiě)分離的操作。

1.Django框架實(shí)現(xiàn)讀寫(xiě)分離

Django做讀寫(xiě)分離非常的簡(jiǎn)單,直接在settings.py中把從機(jī)加入到數(shù)據(jù)庫(kù)的配置文件中就可以了。

DATABASES = {’default’: {’ENGINE’: ’django.db.backends.mysql’,’HOST’: ’127.0.0.1’, # 主服務(wù)器的運(yùn)行ip’PORT’: 3306, # 主服務(wù)器的運(yùn)行port’USER’: ’django_master’, # 主服務(wù)器的用戶(hù)名’PASSWORD’: ’django_master’, # 主服務(wù)器的密碼’NAME’: ’djangobase_master’ # 數(shù)據(jù)表名},’slave’: {’ENGINE’: ’django.db.backends.mysql’,’HOST’: ’127.0.0.1’,’PORT’: 3307,’USER’: ’django_slave’,’PASSWORD’: ’django_slave’,’NAME’: ’djangobase_slave’}}

在項(xiàng)目的app文件中創(chuàng)建db_route.py文件,直接在文件里定義一個(gè)數(shù)據(jù)庫(kù)路由類(lèi),用以區(qū)分讀寫(xiě)操作。

'''數(shù)據(jù)庫(kù)讀寫(xiě)路由''' def db_for_read(self, model, **hints):'''讀'''return 'slave' def db_for_write(self, model, **hints):'''寫(xiě)'''return 'default' def allow_relation(self, obj1, obj2, **hints):'''是否運(yùn)行關(guān)聯(lián)操作'''return True

最后我們?cè)趕ettings.py中寫(xiě)個(gè)路由配置就可以了。

DATABASE_ROUTERS = ['app001.db_router.MasterSlaveDBRouter']

Flask框架實(shí)現(xiàn)讀寫(xiě)分離

首先自定義Session類(lèi),重寫(xiě)get_bind方法,根據(jù)self.flushing判斷讀寫(xiě)操作,選擇對(duì)應(yīng)的數(shù)據(jù)庫(kù)。

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) # 判斷讀寫(xiě)操作 if self._flushing: # 寫(xiě)操作 ,使用主數(shù)據(jù)庫(kù) print('寫(xiě)入數(shù)據(jù)') return state.db.get_engine(self.app, bind=’master’) else: # 讀操作, 使用從數(shù)據(jù)庫(kù) print(’讀取數(shù)據(jù)’) return state.db.get_engine(self.app, bind=’slave’)

自定義SQLAlchemy類(lèi),重寫(xiě)create_session方法,并在其內(nèi)使用自定義的Session類(lèi)。

class RoutingSQLAlchemy(SQLAlchemy): def create_session(self, options): return orm.sessionmaker(class_=RoutingSession, db=self, **options)

接下來(lái)創(chuàng)建app實(shí)例,配置數(shù)據(jù)庫(kù)的監(jiān)聽(tīng)文件, 然后創(chuàng)建db連接對(duì)象就可以了。

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

那么這些就是Python的讀寫(xiě)分離操作,你學(xué)會(huì)了嗎?

以上就是Python web框架(django,flask)實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)讀寫(xiě)分離的示例的詳細(xì)內(nèi)容,更多關(guān)于python MySQL讀寫(xiě)分離的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
主站蜘蛛池模板: Jaeaiot捷易科技-英伟达AI显卡模组/GPU整机服务器供应商 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 搪瓷反应釜厂家,淄博搪瓷反应釜-淄博卓耀 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | 存包柜厂家_电子存包柜_超市存包柜_超市电子存包柜_自动存包柜-洛阳中星 | 粒米特测控技术(上海)有限公司-测功机_减速机测试台_电机测试台 | 安徽控制器-合肥船用空调控制器-合肥家电控制器-合肥迅驰电子厂 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 运动木地板价格,篮球馆体育运动木地板生产厂家_欧氏地板 | 环氧树脂地坪_防静电地坪漆_环氧地坪漆涂料厂家-地壹涂料地坪漆 环球电气之家-中国专业电气电子产品行业服务网站! | 衬四氟_衬氟储罐_四氟储罐-无锡市氟瑞特防腐科技有限公司 | NM-02立式吸污机_ZHCS-02软轴刷_二合一吸刷软轴刷-厦门地坤科技有限公司 | 贵阳用友软件,贵州财务软件,贵阳ERP软件_贵州优智信息技术有限公司 | 岩棉切条机厂家_玻璃棉裁条机_水泥基保温板设备-廊坊鹏恒机械 | 无锡网站建设_小程序制作_网站设计公司_无锡网络公司_网站制作 | crm客户关系管理系统,销售管理系统,crm系统,在线crm,移动crm系统 - 爱客crm | 转子泵_凸轮泵_凸轮转子泵厂家-青岛罗德通用机械设备有限公司 | 柴油机_柴油发电机_厂家_品牌-江苏卡得城仕发动机有限公司 | 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 | 中国玩具展_玩具展|幼教用品展|幼教展|幼教装备展 | 北京康百特科技有限公司-分子蒸馏-短程分子蒸馏设备-实验室分子蒸馏设备 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | 木材烘干机,木炭烘干机,纸管/佛香烘干设备-河南蓝天机械制造有限公司 | 青岛侦探调查_青岛侦探事务所_青岛调查事务所_青岛婚外情取证-青岛狄仁杰国际侦探公司 | 欧版反击式破碎机-欧版反击破-矿山石料破碎生产线-青州奥凯诺机械 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 成人纸尿裤,成人尿不湿,成人护理垫-山东康舜日用品有限公司 | 永嘉县奥阳陶瓷阀门有限公司| 雷蒙磨,雷蒙磨粉机,雷蒙磨机 - 巩义市大峪沟高峰机械厂 | 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 气动球阀_衬氟蝶阀_调节阀_电动截止阀_上海沃托阀门有限公司 | 周易算网-八字测算网 - 周易算网-宝宝起名取名测名字周易八字测算网 | 上海防爆真空干燥箱-上海防爆冷库-上海防爆冷柜?-上海浦下防爆设备厂家? | 集装箱展厅-住人集装箱住宿|建筑|房屋|集装箱售楼处-山东锐嘉科技工程有限公司 | 电子海图系统-电梯检验系统-智慧供热系统开发-商品房预售资金监管系统 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | 一体化污水处理设备_生活污水处理设备_全自动加药装置厂家-明基环保 | 电动液压篮球架_圆管地埋式篮球架_移动平箱篮球架-强森体育 | 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | 高压互感器,电流互感器,电压互感器-上海鄂互电气科技有限公司 |