我正在使用python(2.7),django和mongodb.I想創建支持多個數據庫(monogdb,oracle,Mysql等)的應用程序。如果我們選擇oracle的前端數據應該保存在oracle中,就像那樣。是否有任何方法來編寫該應用程序。如何編寫支持多個數據庫的python應用程序
0
A
回答
2
Django支持multiple databases,所以你只需要一些代碼來處理它們之間的切換。
如果你讀過的文檔,你會看到Django的允許您提供自定義的「路由器」類,這決定其數據庫可用於任何給定的查詢:
https://docs.djangoproject.com/en/1.6/topics/db/multi-db/#using-routers
既然你說你要選擇哪個數據庫「在前端」,那麼大概每個用戶都可以選擇不同的數據庫後端。這提出了一個問題,因爲db路由器對當前的http請求和用戶一無所知。
我建議你使用這個「ThreadLocal的」中間件存儲當前的請求對象,因此您可以從您的自定義路由器訪問:
https://github.com/jedie/django-tools/blob/master/django_tools/middlewares/ThreadLocal.py
比方說,你的用戶選擇的後端in the session保存爲request.session['db_name']
- 路由器會是這個樣子:
from django_tools.middlewares import ThreadLocal
class RequestRouter(object):
def db_for_read(self, model, **hints):
request = ThreadLocal.get_current_request()
return request.session.get('db_name', 'default')
def db_for_write(self, model, **hints):
request = ThreadLocal.get_current_request()
return request.session.get('db_name', 'default')
def allow_relation(self, obj1, obj2, **hints):
return True
def allow_syncdb(self, db, model):
return True
相關問題
- 1. 支持多個數據庫的ASP.NET Web應用程序
- 2. 開發應用程序支持多個數據庫
- 3. 在應用程序的數據庫端支持多種語言
- 4. 多語言支持測試應用程序/數據庫
- 5. 有兩個數據庫支持團隊的Rails應用程序
- 6. 啓動一個支持數據庫的新應用程序
- 7. 如何編寫支持參數化查詢的數據庫類
- 8. 爲任何數據庫支持編寫通用類驅動程序
- 9. iis7不支持多個應用程序
- 10. jsf應用程序不支持多個登錄數據輸入
- 11. 如何編寫應用程序以獨立於數據庫?
- 12. 如何在iPhone中編寫數據庫應用程序
- 13. 如何爲Android應用程序編寫數據庫
- 14. 如何編寫一個檢查openGL支持的安裝程序?
- 15. django中的多個數據庫支持
- 16. 如何爲Web應用程序支持多個用戶界面
- 17. 數據庫支持國際化的Java Web應用程序
- 18. 將metro風格的應用程序支持本地數據庫
- 19. 數據庫設計支持幾種不同的應用程序
- 20. 如何構建Symfony 2應用程序以支持多個應用程序?
- 21. 寫入應用程序支持目錄
- 22. 多數據庫支持
- 23. 用Kotlin編寫的Android庫,爲Java應用程序提供支持
- 24. 支持多鍵搜索應用程序的數據結構
- 25. 供應商如何提供C++庫支持多個編譯器?
- 26. 應用程序如何支持多個圖形API?
- 27. 用Python編寫使用GPS數據的Android應用程序
- 28. C#DB Wrapper支持多個數據庫
- 29. 在Symfony中支持多個數據庫
- 30. iOS爲Web應用程序支持哪些數據庫?
Django的已經支持[多個數據庫(https://docs.djangoproject.com/en/1.6/topics/db/multi-db/),那麼什麼是確切的問題你在面對? –
@Burhan Khalid:坦克的答覆,雅支持。但我需要保存特定的數據庫時,用戶選擇數據庫。(如果你是所有者,你提供多個數據庫來保存用戶數據),我是你的網站,我需要保存我的數據在oracle.Then通過單擊oracle標籤我的數據將被保存在oracle.This是我想。如果你知道,請幫我。提前感謝 – Shiva