欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

django對(duì)多個(gè)數(shù)據(jù)庫支持-創(chuàng)新互聯(lián)

數(shù)據(jù)庫自動(dòng)路由

使用多數(shù)據(jù)庫最簡(jiǎn)單的方法是建立一個(gè)數(shù)據(jù)庫路由模式。默認(rèn)的路由模式確保對(duì)象’粘滯‘在它們?cè)嫉臄?shù)據(jù)庫上(例如,從foo 數(shù)據(jù)庫中獲取的對(duì)象將保存在同一個(gè)數(shù)據(jù)庫中)。默認(rèn)的路由模式還確保如果沒有指明數(shù)據(jù)庫,所有的查詢都回歸到default數(shù)據(jù)庫中。

創(chuàng)新互聯(lián)建站是專業(yè)的夷陵網(wǎng)站建設(shè)公司,夷陵接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行夷陵網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

你不需要做任何事情來激活默認(rèn)的路由模式 —— 它在每個(gè)Django項(xiàng)目上’直接‘提供。然而,如果你想實(shí)現(xiàn)更有趣的數(shù)據(jù)庫分配行為,你可以定義并安裝你自己的數(shù)據(jù)庫路由。

數(shù)據(jù)庫路由

數(shù)據(jù)庫路由是一個(gè)類,它提供4個(gè)方法:

  • db_for_read(model, **hints)

  • 建議model類型的對(duì)象的讀操作應(yīng)該使用的數(shù)據(jù)庫。

    如果一個(gè)數(shù)據(jù)庫操作能夠提供其它額外的信息可以幫助選擇一個(gè)數(shù)據(jù)庫,它將在hints字典中提供。合法的hints 的詳細(xì)信息在下文給出。

    如果沒有建議,則返回None。

  • db_for_write(model, **hints)

  • 建議Model 類型的對(duì)象的寫操作應(yīng)該使用的數(shù)據(jù)庫。

    如果一個(gè)數(shù)據(jù)庫操作能夠提供其它額外的信息可以幫助選擇一個(gè)數(shù)據(jù)庫,它將在hints字典中提供。 合法的hints 的詳細(xì)信息在下文給出。

    如果沒有建議,則返回None

  • allow_relation(obj1, obj2, **hints)

  • 如果obj1 和obj2 之間應(yīng)該允許關(guān)聯(lián)則返回True,如果應(yīng)該防止關(guān)聯(lián)則返回False,如果路由無法判斷則返回None。這是純粹的驗(yàn)證操作,外鍵和多對(duì)多操作使用它來決定兩個(gè)對(duì)象之間是否應(yīng)該允許一個(gè)關(guān)聯(lián)。

  • allow_migrate(db, app_label, model_name=None, **hints)

  • 定義遷移操作是否允許在別名為db的數(shù)據(jù)庫上運(yùn)行。如果操作應(yīng)該運(yùn)行則返回True ,如果不應(yīng)該運(yùn)行則返回False,如果路由無法判斷則返回None。

    位置參數(shù)app_label 是正在遷移的應(yīng)用的標(biāo)簽。

    大部分遷移操作設(shè)置model_name的值為正在遷移的模型的model._meta.model_name(模型的__name__ 的小寫)。對(duì)于RunPythonRunSQL 操作它的值為None,除非這兩個(gè)操作使用hint 提供它。

    hints 用于某些操作來傳遞額外的信息給路由。

    當(dāng)設(shè)置了model_name時(shí),hints 通常通過鍵'model'包含該模型的類。注意,它可能是一個(gè)歷史模型,因此不會(huì)有自定的屬性、方法或管理器。你應(yīng)該只依賴_meta。

    這個(gè)方法還可以用來決定一個(gè)給定數(shù)據(jù)庫上某個(gè)模型的可用性。

    注意,如果這個(gè)方法返回False,遷移將默默地不會(huì)在模型上做任何操作。這可能導(dǎo)致你應(yīng)用某些操作之后出現(xiàn)損壞的外鍵、表多余或者缺失。

    Changed in Django 1.8:

    allow_migrate的簽名與以前的版本相比發(fā)生了顯著更改。有關(guān)詳細(xì)信息,請(qǐng)參閱deprecation notes。

路由不必提供所有這些方法 —— 它可以省略一個(gè)或多個(gè)。如果某個(gè)方法缺失,在做相應(yīng)的檢查時(shí)Django 將忽略該路由。

例子:

DATABASES = {
    'auth_db': {
        'NAME': 'auth_db',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'mysql_user',
        'PASSWORD': 'swordfish',
    },
    'primary': {
        'NAME': 'primary',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'mysql_user',
        'PASSWORD': 'spam',
    },
    'replica1': {
        'NAME': 'replica1',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'mysql_user',
        'PASSWORD': 'eggs',
    },
    'replica2': {
        'NAME': 'replica2',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'mysql_user',
        'PASSWORD': 'bacon',
    },}

現(xiàn)在我們將需要處理路由。首先,我們需要一個(gè)路由,它知道發(fā)送auth 應(yīng)用的查詢到auth_db

class AuthRouter(object):
    """    A router to control all database operations on models in the    auth application.    """
    def db_for_read(self, model, **hints):
        """        Attempts to read auth models go to auth_db.        """
        if model._meta.app_label == 'auth':
            return 'auth_db'
        return None

    def db_for_write(self, model, **hints):
        """        Attempts to write auth models go to auth_db.        """
        if model._meta.app_label == 'auth':
            return 'auth_db'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        """        Allow relations if a model in the auth app is involved.        """
        if obj1._meta.app_label == 'auth' or \           obj2._meta.app_label == 'auth':
           return True
        return None

    def allow_migrate(self, db, app_label, model=None, **hints):
        """        Make sure the auth app only appears in the 'auth_db'        database.        """
        if app_label == 'auth':
            return db == 'auth_db'
        return None

我們還需要一個(gè)路由,它發(fā)送所有其它應(yīng)用的查詢到primary/replica 配置,并隨機(jī)選擇一個(gè)replica 來讀?。?/p>

import randomclass PrimaryReplicaRouter(object):
    def db_for_read(self, model, **hints):
        """        Reads go to a randomly-chosen replica.        """
        return random.choice(['replica1', 'replica2'])

    def db_for_write(self, model, **hints):
        """        Writes always go to primary.        """
        return 'primary'

    def allow_relation(self, obj1, obj2, **hints):
        """        Relations between objects are allowed if both objects are        in the primary/replica pool.        """
        db_list = ('primary', 'replica1', 'replica2')
        if obj1._state.db in db_list and obj2._state.db in db_list:
            return True
        return None

    def allow_migrate(self, db, app_label, model=None, **hints):
        """        All non-auth models end up in this pool.        """
        return True

最后,在設(shè)置文件中,我們添加如下內(nèi)容(替換path.to.為該路由定義所在的真正路徑):

DATABASE_ROUTERS = ['path.to.AuthRouter', 'path.to.PrimaryReplicaRouter']

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。

名稱欄目:django對(duì)多個(gè)數(shù)據(jù)庫支持-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://aaarwkj.com/article24/cdhdce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、App開發(fā)、外貿(mào)網(wǎng)站建設(shè)、外貿(mào)建站、品牌網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
欧美激情在线精品一区二区| 人妻少妇被猛烈进入久久精品| 人妻中文字幕日韩av| 日本成人一区二区在线播放| 免费高清日本一区二区三区视频 | 亚洲国产欧美日韩在线不卡成人| 亚洲精品一品区二品区三区| 18岁禁看网站在线看| 国产情侣自拍视频在线观看| 日韩在线视频 一区二区三区| 打开网址国语一级黄色片| 国产美女高潮流白浆视频免费看| 欧美日韩国产看片一区二区| 色偷偷91综合久久噜噜| 久久亚洲一区二区内射| 亚洲三级黄片免费播放| 尤物视频在线观看官网| 高清一区二区三区不卡视频| 亚洲成年人黄色小说网站| av高清不卡一区二区免费在线| 成人又黄又爽大片在线观看| 亚洲精品在线观看日本| 禁区正片免费看完整国产| 91国产在线视频免费观看| 狠狠综爱五月天的婷婷| 日本爱爱一区二区三区| 午夜毛片免费在线播放| 日韩视频专区一区二区| 免费女性啪啪无遮挡网站| 国产极品嫩模91精品| 一区二区三区四区蜜桃av| 亚洲成av人天堂影院| 偷窥偷拍视频一区二区| 亚洲精品午夜福利网| 欧美日韩国产一区二区的| 伊在人亚洲香蕉精品区| 久久久亚洲成人国产av| 亚洲欧美另类国产一区| 日韩精品中文字幕电影| 日韩高清伦理一区二区| 欧美成人精品午夜一区二区|