Django中一個項目里怎么使用兩個數據庫


在django項目中, 一個工程中存在多個APP應用很常見. 有時候希望不同的APP連接不同的數據庫,這個時候需要建立多個數據庫連接。

1. 修改項目的 settings 配置 

在 settings.py 中配置需要連接的多個數據庫連接串

 

2. 設置數據庫的路由規則方法 

在settings.py中配置DATABASE_ROUTERS

1DATABASE_ROUTERS = ['Prject.database_router.DatabaseAppsRouter']

Project: 建立的django項目名稱(project_name)

database_router: 定義路由規則database_router.py文件名稱, 這個文件名可以自己定義

DatabaseAppsRouter: 路由規則的類名稱,這個類是在database_router.py文件中定義

3. 設置APP對應的數據庫路由表 

每個APP要連接哪個數據庫,需要在做匹配設置,在settings.py文件中做如下配置:

 

以上的report, regs是項目中的 APP名,分別指定到 ora1, default的數據庫。 

為了使django自己的表也創建到你自己定義的數據庫中,你可以指定 : admin, auth, contenttypes, sessions 到設定的數據庫中,如果不指定則會自動創建到默認(default)的數據庫中.

4. 創建數據庫路由規則

在項目工程根路徑下(與 settings.py 文件一級)創建database_router.py文件:

5.原生sql 的使用:

 

6. Models創建樣例

在各自的 APP 中創建數據表的models時,必須要指定表的 app_label 名字,如果不指定則會創建到default中配置的數據庫名下,

如下:

在app01下創建models

 

在app02下創建models

 

7. 生成數據表

在使用django的 migrate 創建生成表的時候,需要加上 –database 參數,如果不加則將 未 指定 app_label 的 APP的models中的表創建到default指定的數據庫中,如:

將app01下models中的表創建到db01的數據庫”db_01”中

./ manage.py  migrate--database=db01                               

將app02下models中的表創建到db02的數據庫”db_02”中

./ manage.py  migrate--database=db02

將app03下models中的表創建到default的數據庫”sqlite3”中

./ manage.py  migrate

以上創建完成后,其它所有的創建、查詢、刪除等操作就和普通一樣操作就可以了,無需再使用類似

models.User.objects.using(dbname).all()

這樣的方式來操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM