我正在考慮爲Django項目上的某些應用程序創建單獨的SQLite數據庫。
但是,如果可能的話,我不想使用直接的SQLite訪問。 Django風格的ORM訪問這些數據庫將是理想的。
這可能嗎?是否有可能在同一個Django項目中有獨立的SQLite數據庫?
謝謝。
我正在考慮爲Django項目上的某些應用程序創建單獨的SQLite數據庫。
但是,如果可能的話,我不想使用直接的SQLite訪問。 Django風格的ORM訪問這些數據庫將是理想的。
這可能嗎?是否有可能在同一個Django項目中有獨立的SQLite數據庫?
謝謝。
目前沒有 - 每個項目使用一個數據庫,並且每個應用程序必須存在於其中。如果你想擁有一個特定於應用程序的數據庫,那麼你不能通過Django ORM來實現。請參閱Multiple Database Support上的Django wiki頁面。
這是不可能的,但在維基上有一些討論,Multiple Database Support in Django。在keynote on the future of Django at DjangoCon 2008期間它也被提出並且成爲一個較高優先級的問題。
是的 - 低級的API已經到位,它現在只是缺少一個方便的高級API。這些報價來自James Bennett (Django's release manager) on programming reddit:
它已經存在 - 在一個非常低級別的API對於那些誰看的代碼庫 - 現在個月(每
QuerySet
由Query
,這反過來又接受支持數據庫連接作爲參數)。沒有任何高層次的記錄API,但我知道那些已經在做並且一直在做諸如多DB /分片場景的人。...這不一定是需要大寫的東西;
__init__()
方法QuerySet
接受關鍵字參數query
,該參數應該是django.db.models.sql.Query
的實例。反過來,Query
的__init__()
方法接受關鍵字參數connection
,該關鍵字參數應該是(針對您的數據庫的後端特定子類)django.db.backends.BaseDatabaseWrapper
的實例。從那裏,它很容易;例如,您可以在管理器上覆蓋
get_query_set()
,以始終使用所需的連接返回QuerySet
,或者設置分片邏輯等功能,根據傳入查詢參數等確定使用哪個DB。