Django中不同應(yīng)用使用分布式數(shù)據(jù)庫

在一個Django應(yīng)用中可以創(chuàng)建多個APP應(yīng)用雳灵,每個APP應(yīng)用都可以獨立使用幢痘,在有多個APP的情況下介杆,APP之間若數(shù)據(jù)庫使用不一褥符,如APP1使用的數(shù)據(jù)庫IP與APP2使用的數(shù)據(jù)庫IP不一致龙誊,或者APP1使用MYSQL,APP2使用PGSQL喷楣,那么就要對不同APP的數(shù)據(jù)庫進行不同的設(shè)置趟大。

以下為一次實際操作演示。

DATABASES?={

????'default':?{

????????'ENGINE':?'django.db.backends.sqlite3',

????????'NAME':?os.path.join(BASE_DIR,?'db.sqlite3'),

????},

????'db1':?{

????????'ENGINE':?'django.db.backends.mysql',

????????'NAME':?'dbname1',

????????'USER':?'your_db_user_name',

????????'PASSWORD':?'yourpassword',

????????"HOST":?"localhost",

????},

????'db2':?{

????????'ENGINE':?'django.db.backends.mysql',

????????'NAME':?'dbname2',

????????'USER':?'your_db_user_name',

????????'PASSWORD':?'yourpassword',

????????"HOST":?"localhost",

????},

}

#?use?multi-database?in?django

#?add?by?WeizhongTu

DATABASE_ROUTERS?=['{項目名稱}.database_router.DatabaseAppsRouter']

DATABASE_APPS_MAPPING?={

????#?example:

????#'app_name':'database_name',

????'app1':?'db1',

????'app2':?'db2',

}


setting.py截圖

在project_name目錄下創(chuàng)建一個database_route.py文件(即與setting.py同級的文件)

文件中寫入:

? ??fromdjango.conf?importsettings


DATABASE_MAPPING?=settings.DATABASE_APPS_MAPPING



classDatabaseAppsRouter(object):

????"""

????A?router?to?control?all?database?operations?on?models?for?different

????databases.


????In?case?an?app?is?not?set?in?settings.DATABASE_APPS_MAPPING,?the?router

????will?fallback?to?the?`default`?database.


????Settings?example:


????DATABASE_APPS_MAPPING?=?{'app1':?'db1',?'app2':?'db2'}

????"""


????defdb_for_read(self,?model,?**hints):

????????""""Point?all?read?operations?to?the?specific?database."""

????????ifmodel._meta.app_label?inDATABASE_MAPPING:

????????????return DATABASE_MAPPING[model._meta.app_label]

????????return None


????defdb_for_write(self,?model,?**hints):

????????"""Point?all?write?operations?to?the?specific?database."""

????????ifmodel._meta.app_label?inDATABASE_MAPPING:

????????????return DATABASE_MAPPING[model._meta.app_label]

????????return None


????defallow_relation(self,?obj1,?obj2,?**hints):

????????"""Allow?any?relation?between?apps?that?use?the?same?database."""

????????db_obj1?=DATABASE_MAPPING.get(obj1._meta.app_label)

????????db_obj2?=DATABASE_MAPPING.get(obj2._meta.app_label)

????????ifdb_obj1?anddb_obj2:

????????????ifdb_obj1?==db_obj2:

????????????????return True

????????????else:

????????????????return False

????????return None


實際操作時:

python manage.py makemigrations {app} 創(chuàng)建存儲

python manage.py migrate? 同步數(shù)據(jù)庫? ? ?

在代碼中使用時候:

test=BlogT.objects.using('db1').get_or_create(title=title,content=content)

在object取得對象時候指定你使用的數(shù)據(jù)庫 using(‘{setting的數(shù)據(jù)庫}’)


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铣焊,一起剝皮案震驚了整個濱河市逊朽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌曲伊,老刑警劉巖叽讳,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異熊昌,居然都是意外死亡绽榛,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門婿屹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灭美,“玉大人,你說我怎么就攤上這事昂利〗旄” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵蜂奸,是天一觀的道長犁苏。 經(jīng)常有香客問我,道長扩所,這世上最難降的妖魔是什么围详? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮祖屏,結(jié)果婚禮上助赞,老公的妹妹穿的比我還像新娘。我一直安慰自己袁勺,他們只是感情好雹食,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著期丰,像睡著了一般群叶。 火紅的嫁衣襯著肌膚如雪吃挑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天街立,我揣著相機與錄音舶衬,去河邊找鬼。 笑死几晤,一個胖子當(dāng)著我的面吹牛约炎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蟹瘾,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掠手!你這毒婦竟也來了憾朴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤喷鸽,失蹤者是張志新(化名)和其女友劉穎众雷,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體做祝,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡砾省,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了混槐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片编兄。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖声登,靈堂內(nèi)的尸體忽然破棺而出狠鸳,到底是詐尸還是另有隱情,我是刑警寧澤悯嗓,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布件舵,位于F島的核電站,受9級特大地震影響脯厨,放射性物質(zhì)發(fā)生泄漏铅祸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一合武、第九天 我趴在偏房一處隱蔽的房頂上張望临梗。 院中可真熱鬧,春花似錦眯杏、人聲如沸夜焦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茫经。三九已至巷波,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卸伞,已是汗流浹背抹镊。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留荤傲,地道東北人垮耳。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像遂黍,于是被迫代替她去往敵國和親终佛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容