2010-07-01 34 views
3

是否有可能在飛行中向Django添加新的數據庫連接?可能在飛行中刷新Django連接?

我有一個應用程序使用多個數據庫(Django的1.2.1),並在運行時,它允許創建新的數據庫。我需要馬上使用這個新的數據庫(django.db.connections[db_alias])。沒有服務器重啓可能嗎?在這裏和那裏使用模塊reload

謝謝你的時間。

回答

2

這是可能的...但不建議...... 您可以訪問當前的連接處理程序...

使用這樣的事情:

from django.db import connections 
if not alias in connections.databases: 
    connections.databases[alias] = connections.databases['default'] # Copy 'default' 
    connections.databases[alias]['NAME'] = alias    

確保你不嘗試在當前線程上有任何數據庫活動的同時向數據庫字典添加一個新的別名。

你需要克服的一個問題是,這段代碼需要放在某個地方,在試圖訪問數據庫之前,它總是會被當前線程觸及。我使用中間件來實現這一點。

+2

同樣值得注意的是,確保您的數據庫在結構上完全相同......因爲此技術繞過了Django數據庫驗證。 – Howard 2011-10-04 22:48:48