欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)自定義讀寫分離代碼實(shí)例

 更新時(shí)間:2019年11月16日 11:41:00   作者:太虛真人  
這篇文章主要介紹了Python實(shí)現(xiàn)自定義讀寫分離代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Python實(shí)現(xiàn)自定義讀寫分離代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

思路

  • 自定義Session類
    • 重寫get_bind方法
    • 根據(jù)self._flushing判斷讀寫操作, 選擇對(duì)應(yīng)的數(shù)據(jù)庫(kù)
  • 自定義SQLAlchemy類
    • 重寫create_session, 在其中使用自定義的Session類
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: # 寫操作 ,使用主數(shù)據(jù)庫(kù)
      print("寫入數(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')


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


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ì)開啟, 影響性能
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 設(shè)置是否打印底層執(zhí)行的SQL語(yǔ)句
app.config['SQLALCHEMY_ECHO'] = False

# 創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象
db = RoutingSQLAlchemy(app)

# 用戶表 一
class User(db.Model):
  __tablename__ = 't_user'
  id = db.Column(db.Integer, primary_key=True)
  name = db.Column(db.String(20), unique=True)


@app.route('/')
def index():
  # 增加數(shù)據(jù)
  user1 = User(name='zs')
  db.session.add(user1)
  db.session.commit()

  # 查詢數(shù)據(jù)
  users = User.query.all()
  print(users)
  return "index"

if __name__ == '__main__':
  # 刪除所有繼承自db.Model的表
  db.drop_all()
  # 創(chuàng)建所有繼承自db.Model的表
  db.create_all()
  app.run(debug=True)

不太好,自動(dòng)選擇不能控制

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python迷宮問題深度優(yōu)先遍歷實(shí)例

    python迷宮問題深度優(yōu)先遍歷實(shí)例

    這篇文章主要給大家介紹了關(guān)于python迷宮問題深度優(yōu)先遍歷的相關(guān)資料,深度優(yōu)先搜索算法(Depth-First-Search),是搜索算法的一種,需要的朋友可以參考下
    2021-06-06
  • numpy中的meshgrid函數(shù)的使用

    numpy中的meshgrid函數(shù)的使用

    這篇文章主要介紹了numpy中的meshgrid函數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • matplotlib一維散點(diǎn)分布圖的實(shí)現(xiàn)

    matplotlib一維散點(diǎn)分布圖的實(shí)現(xiàn)

    本文主要介紹了matplotlib一維散點(diǎn)分布圖的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • PyQt5 QTreeWidget 樹形結(jié)構(gòu)遞歸遍歷當(dāng)前所有節(jié)點(diǎn)的實(shí)現(xiàn)

    PyQt5 QTreeWidget 樹形結(jié)構(gòu)遞歸遍歷當(dāng)前所有節(jié)點(diǎn)的實(shí)現(xiàn)

    Qt中實(shí)現(xiàn)樹形結(jié)構(gòu)可以使用QTreeWidget類,也可以使用QTreeView類,本文主要介紹了PyQt5 QTreeWidget 樹形結(jié)構(gòu)遞歸遍歷當(dāng)前所有節(jié)點(diǎn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Python實(shí)現(xiàn)最短路徑問題的方法

    Python實(shí)現(xiàn)最短路徑問題的方法

    本篇章主要介紹圖的最短路徑問題,包括Dijkstra算法和Floyd算法.并用Python代碼實(shí)現(xiàn),需要的朋友可以參考下
    2021-06-06
  • python實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲

    python實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • python和node.js生成當(dāng)前時(shí)間戳的示例

    python和node.js生成當(dāng)前時(shí)間戳的示例

    這篇文章主要介紹了python和node.js生成當(dāng)前時(shí)間戳的示例,幫助大家更好的理解和學(xué)習(xí)python與node.js,感興趣的朋友可以了解下
    2020-09-09
  • Python多線程爬蟲簡(jiǎn)單示例

    Python多線程爬蟲簡(jiǎn)單示例

    這篇文章主要為大家詳細(xì)介紹了Python多線程爬蟲簡(jiǎn)單示例,感興趣的小伙伴們可以參考一下
    2016-03-03
  • python小程序之飄落的銀杏

    python小程序之飄落的銀杏

    這篇文章主要介紹了利用制作的python小程序-飄落的銀杏,代碼詳細(xì),簡(jiǎn)單易懂,有需要練習(xí)python的朋友可以參考下
    2021-04-04
  • pygame實(shí)現(xiàn)五子棋游戲

    pygame實(shí)現(xiàn)五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了pygame實(shí)現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10

最新評(píng)論