国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Django連接多個(gè)數(shù)據(jù)庫

這篇具有很好參考價(jià)值的文章主要介紹了Django連接多個(gè)數(shù)據(jù)庫。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

初衷

為了讓不同業(yè)務(wù)的數(shù)據(jù)分離,落到不同的庫,使用django連接多個(gè)數(shù)據(jù)庫。

設(shè)置

# settings.py
DATABASES = {
    "default": {},
    "users": {
        "NAME": "user_data",
        "ENGINE": "django.db.backends.mysql",
        "USER": "mysql_user",
        "PASSWORD": "superS3cret",
    },
    "customers": {
        "NAME": "customer_data",
        "ENGINE": "django.db.backends.mysql",
        "USER": "mysql_cust",
        "PASSWORD": "veryPriv@ate",
    },
}
  • Django使用default數(shù)據(jù)庫,如果沒有其他選擇
  • default可以沒有,但是必須設(shè)置一個(gè)空字典

同步

設(shè)置多個(gè)數(shù)據(jù)庫,需要同步多次。這里比較麻煩。

python3 manage.py
python manage.py migrate message。# 遷移到default庫
python manage.py migrate message  --database=message_db

遷移將會(huì)把所有model的所有表鏡像的遷移到兩個(gè)庫,自帶的指令不要指望一次遷移所有model分表存儲(chǔ)

Database Routing

class MessageRouter:
    """
    A router to control all database operations on models in the
    auth and contenttypes applications.
    """

    route_app_labels = { "message", "data"}
    

    def db_for_read(self, model, **hints):
        """
        Attempts to read auth and contenttypes models go to message_db.
        """


        if model._meta.app_label in self.route_app_labels:
            return "message_db"
            
            
        return None

    def db_for_write(self, model, **hints):
        """
        Attempts to write auth and contenttypes models go to message_db.
        """
        if model._meta.app_label in self.route_app_labels:

            return "message_db"
        return None

    def allow_relation(self, obj1, obj2, **hints):
        """
        Allow relations if a model in the auth or contenttypes apps is
        involved.
        """

        if (
            obj1._meta.app_label in self.route_app_labels
            or obj2._meta.app_label in self.route_app_labels
        ):
            return True
        return None

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        """
        Make sure the auth and contenttypes apps only appear in the
        'message_db' database.
        """
        if app_label in self.route_app_labels:

           
            return db == "message_db"
       
        return None

可以通過django的路徑中間件來對(duì)數(shù)據(jù)庫的讀、寫、遷移權(quán)限進(jìn)行設(shè)置。
需要在settings.py中添加

DATABASE_ROUTERS = ["path.to.MessageRouter"]
# my instance is ["message.MessageRouter.MessageRouter"]

fake遷移

如果遇到不希望遷移到A庫,但會(huì)一直提示的情況,可以使用fake遷移

py manage.py migrate  <app> --fake

總結(jié)

數(shù)據(jù)分庫存儲(chǔ)(也稱為數(shù)據(jù)庫分片或數(shù)據(jù)庫分區(qū))是一種將大型數(shù)據(jù)庫分解為更小、更易于管理的組件(稱為“分片”或“分區(qū)”)的策略。這種方法有多個(gè)潛在好處:

  1. 提高性能和響應(yīng)時(shí)間
    讀寫分離: 通過將讀操作和寫操作分配到不同的數(shù)據(jù)庫或分片上,可以提高系統(tǒng)的吞吐量和響應(yīng)時(shí)間。
    并行處理: 分庫允許多個(gè)查詢和事務(wù)并行執(zhí)行在不同的數(shù)據(jù)庫或分片上,從而提高性能。
  2. 擴(kuò)展性
    水平擴(kuò)展: 當(dāng)數(shù)據(jù)量和訪問量增加時(shí),可以通過添加更多的數(shù)據(jù)庫或分片來輕松擴(kuò)展系統(tǒng),而不是替換現(xiàn)有的硬件(這稱為垂直擴(kuò)展)。
  3. 簡化備份和恢復(fù)
    更快的備份: 小的數(shù)據(jù)庫分片更容易和更快地備份。
    局部恢復(fù): 如果一個(gè)分片出現(xiàn)問題,你可以只恢復(fù)那個(gè)特定的分片,而不影響整個(gè)系統(tǒng)。
  4. 高可用性和故障轉(zhuǎn)移
    冗余: 數(shù)據(jù)可以在多個(gè)分片或數(shù)據(jù)庫中進(jìn)行冗余存儲(chǔ),從而提高數(shù)據(jù)的可用性。
    故障隔離: 如果一個(gè)數(shù)據(jù)庫或分片出現(xiàn)問題,它不會(huì)影響到其他分片,從而減少了故障的影響范圍。
  5. 數(shù)據(jù)局部性
    優(yōu)化查詢: 數(shù)據(jù)分片可以根據(jù)應(yīng)用的訪問模式來進(jìn)行優(yōu)化,例如,通過地理位置或時(shí)間來分片,從而提高查詢性能。
  6. 管理和維護(hù)
    分布式管理: 小的、分散的數(shù)據(jù)庫通常更容易管理和維護(hù)。
    版本控制和更新: 可以逐個(gè)更新或修改數(shù)據(jù)庫分片,而不是一次性更新整個(gè)數(shù)據(jù)庫。
  7. 成本效益
    硬件成本: 通過使用分庫,你可以在廉價(jià)的 commodity 硬件上分布式地存儲(chǔ)和處理數(shù)據(jù),而不是依賴單一、昂貴的高性能服務(wù)器。
    盡管數(shù)據(jù)分庫存儲(chǔ)有很多好處,但它也帶來了一些挑戰(zhàn),如數(shù)據(jù)一致性、復(fù)雜的查詢和事務(wù)處理等。因此,在決定采用這種策略之前,需要仔細(xì)評(píng)估應(yīng)用的需求和特點(diǎn)。

但是會(huì)比較麻煩,每次都要遷移兩個(gè)數(shù)據(jù)庫。文章來源地址http://www.zghlxwxcb.cn/news/detail-670240.html

到了這里,關(guān)于Django連接多個(gè)數(shù)據(jù)庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Django連接數(shù)據(jù)庫

    Django連接數(shù)據(jù)庫

    mysql -u?root -p show databases; 在settings.py文件中進(jìn)行配置和修改 在models.py文件中進(jìn)行修改 創(chuàng)建表 執(zhí)行命令: python manage.py makemigrations python manage.py migrate 條件:在setings保證app已經(jīng)注冊(cè) 刪除表 當(dāng)需要?jiǎng)h除表時(shí),則再models.py中注釋表結(jié)構(gòu),然后重新執(zhí)行命令即可。 修改表 新增列的

    2024年04月27日
    瀏覽(26)
  • django如何連接sqlite數(shù)據(jù)庫?

    django如何連接sqlite數(shù)據(jù)庫?

    目錄 一、SQLite數(shù)據(jù)庫簡介 二、Django連接SQLite數(shù)據(jù)庫 1、配置數(shù)據(jù)庫 2、創(chuàng)建數(shù)據(jù)庫表 三、使用Django ORM操作SQLite數(shù)據(jù)庫 1、定義模型 2、創(chuàng)建對(duì)象 3、查詢對(duì)象 總結(jié) 本文將深入探討如何在Django框架中連接和使用SQLite數(shù)據(jù)庫。我們將介紹SQLite數(shù)據(jù)庫的特點(diǎn),Django的數(shù)據(jù)庫配置,以

    2024年02月06日
    瀏覽(34)
  • Django的mysql數(shù)據(jù)庫連接

    Django的mysql數(shù)據(jù)庫連接

    首先Mysql和navicate Premuim 已經(jīng)安裝好,并且可以建立數(shù)據(jù)庫的連接,本次需使用的工具是 1、vs code 2、navicate Premuim 3、Mysql 打開vs code ,按Ctrl+ Shift + ~ ,調(diào)出vs code的終端界面,輸入以下命令創(chuàng)建 test11 項(xiàng)目? django-admin startproject test11 (1)創(chuàng)建虛擬環(huán)境命令: 需要跳轉(zhuǎn)到項(xiàng)目test1

    2024年02月05日
    瀏覽(29)
  • django連接本地?cái)?shù)據(jù)庫并執(zhí)行增刪改查

    django連接本地?cái)?shù)據(jù)庫并執(zhí)行增刪改查

    models.py文件根據(jù)數(shù)據(jù)庫表映射出對(duì)應(yīng)的類 在views.py中實(shí)現(xiàn)增刪改查操作: 增: 刪: 改: 查:

    2024年02月20日
    瀏覽(19)
  • Django后端開發(fā)——mysql數(shù)據(jù)庫連接遇到的問題及解決

    stackflow帖子:https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost 報(bào)錯(cuò): 數(shù)據(jù)庫拒絕root用戶的連接 settings.py中關(guān)于數(shù)據(jù)庫的配置: 可以看到root用戶的密碼為123456 但是在mysql數(shù)據(jù)庫里面查看用戶信息,root的密碼為空 這樣的不匹配導(dǎo)致連接失敗 之前嘗試

    2024年02月20日
    瀏覽(96)
  • python+django遷移數(shù)據(jù)庫成功但是數(shù)據(jù)庫中還沒表產(chǎn)生

    1、刪除原來的文件(我這沒了,反正就是之前執(zhí)行下面兩條命令生成的文件) 2、檢查settings.py中DATABASES參數(shù),首先是數(shù)據(jù)庫的信息對(duì)不對(duì)。我這里是因?yàn)镋NGINE=“django.db.backends.sqlite3” 因?yàn)槲沂褂玫臄?shù)據(jù)庫是mysql,所以修改成“django.db.backends.mysql”就好了,就這搞了一天,真

    2024年02月11日
    瀏覽(29)
  • Django ORM:數(shù)據(jù)庫操作的Python化藝術(shù)

    Django ORM:數(shù)據(jù)庫操作的Python化藝術(shù)

    Django的對(duì)象關(guān)系映射器(ORM)是其核心功能之一,允許開發(fā)者使用Python代碼來定義、操作和查詢數(shù)據(jù)庫。這篇文章將帶你深入了解Django ORM的強(qiáng)大之處,從基本概念到高級(jí)查詢技巧,提供豐富的示例幫助你掌握使用Django ORM進(jìn)行有效和高效的數(shù)據(jù)庫操作。 Django ORM的目的是提供一

    2024年02月04日
    瀏覽(34)
  • python+django+mysql項(xiàng)目實(shí)踐二(前端及數(shù)據(jù)庫)

    python+django+mysql項(xiàng)目實(shí)踐二(前端及數(shù)據(jù)庫)

    Pycharm 開發(fā)環(huán)境 Django 前端 MySQL 數(shù)據(jù)庫 Navicat 數(shù)據(jù)庫管理 添加模板 在templates下創(chuàng)建 views文件中添加 在setting文件中進(jìn)行配置 在Terminal輸入命令下發(fā)指令

    2024年02月14日
    瀏覽(23)
  • python#django數(shù)據(jù)庫一對(duì)一/一對(duì)多/多對(duì)多

    python#django數(shù)據(jù)庫一對(duì)一/一對(duì)多/多對(duì)多

    搭建 # 一對(duì)一 class?? TestUser(models.Model): ??? username=models.CharField(max_length=32) ??? password = models.CharField(max_length=32) class TestInfo(models.Model): ??? mick_name=models.CharField(max_length=32) ??? user=models.OneToOneField(to=TestUser,on_delete=models.CASCADE()#on_delete 刪除的模式 CASCADE 級(jí)聯(lián)刪除 讓后執(zhí)行數(shù)

    2024年02月14日
    瀏覽(30)
  • 二擋起步——pythonweb開發(fā)Django框架,前端原生+Django后端框架+python網(wǎng)絡(luò)抓包(代替數(shù)據(jù)庫數(shù)據(jù))(附帶小案例)

    二擋起步——pythonweb開發(fā)Django框架,前端原生+Django后端框架+python網(wǎng)絡(luò)抓包(代替數(shù)據(jù)庫數(shù)據(jù))(附帶小案例)

    ?大家好,我是csdn的博主: lqj_本人 這是我的個(gè)人博客主頁: lqj_本人的博客_CSDN博客-微信小程序,前端,python領(lǐng)域博主 lqj_本人擅長微信小程序,前端,python,等方面的知識(shí) https://blog.csdn.net/lbcyllqj?spm=1011.2415.3001.5343 嗶哩嗶哩歡迎關(guān)注: 小淼Develop 小淼Develop的個(gè)人空間-小淼Develop個(gè)

    2024年02月03日
    瀏覽(109)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包