W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
首先告知 Django,你正在使用至少2個數(shù)據(jù)庫服務(wù)。通過 ?DATABASES
?配置來將指定的數(shù)據(jù)庫鏈接放入一個字典,以此來映射數(shù)據(jù)庫別名,數(shù)據(jù)庫別名是在整個Django中引用特定數(shù)據(jù)庫的一種方式。
可以選擇任意的數(shù)據(jù)庫別名,但是``?default
?`` 別名具有特殊意義。當(dāng)沒有數(shù)據(jù)庫指定選擇的時候,Django 使用帶有 ?default
?別名的數(shù)據(jù)庫。
接下來一個 ?settings.py
? 片段,定義了2個數(shù)據(jù)庫——默認(rèn)的 PostgreSQL 數(shù)據(jù)庫和名叫 ?users
?的 MySQL 數(shù)據(jù)庫。
DATABASES = {
'default': {
'NAME': 'app_data',
'ENGINE': 'django.db.backends.postgresql',
'USER': 'postgres_user',
'PASSWORD': 's3krit'
},
'users': {
'NAME': 'user_data',
'ENGINE': 'django.db.backends.mysql',
'USER': 'mysql_user',
'PASSWORD': 'priv4te'
}
}
如果 ?default
?數(shù)據(jù)庫的設(shè)計在項(xiàng)目中沒有使用,那么你需要特別注意始終指定你所使用的數(shù)據(jù)庫。Django 需要定義 ?default
? 數(shù)據(jù)庫,但如果沒有使用數(shù)據(jù)庫的話,參數(shù)字典可以置空。這樣,你必須為所有的模型,包括你所使用的任何 ?contrib
?和第三方 app 設(shè)置 ?DATABASE_ROUTERS
?,所以不會有任何查詢路由到默認(rèn)數(shù)據(jù)庫。下面示例來講在默認(rèn)數(shù)據(jù)庫為空的情況下,如何定義兩個非默認(rèn)數(shù)據(jù)庫:
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'
}
}
如果您嘗試訪問您尚未在 ?DATABASES
?設(shè)置中定義的數(shù)據(jù)庫,Django 將引發(fā) ?django.utils.connection.ConnectionDoesNotExist
? 異常。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: