2012-08-06 76 views
2

我正在嘗試構建一個基於Django的網頁(我知道python,並希望開發一對基於Web的應用程序)。此頁面的目標是顯示來自幾個不同數據庫的數據,這些數據庫只能讀取。基本上,它是儀表板類型的幾個關鍵的事情。如何使用Django查詢多個數據庫類型?

我已經構建了一個Sqlite數據庫來存放應用程序的Django設置。儘管如何從這裏分支?我想查詢一個Oracle數據庫和一個MySQL數據庫?

我可以單獨詢問他們使用這樣的事情在一個合適的視圖:

def test(request): 
    from django.db import load_backend 
    myBackend = load_backend('django.db.backends.oracle') # or 'mysql', 'sqlite3', 'oracle' 
    myConnection = myBackend.DatabaseWrapper({ 
     'HOST': 'myhost', 
     'NAME': 'mysid', 
     'OPTIONS': {}, 
     'PASSWORD': "mypass", 
     'PORT': "1521", 
     'USER': "myuser", 
     'TIME_ZONE': "America/Chicago"}) 

    # Now we can do all the standard raw sql stuff with myConnection. 
    myCursor = myConnection.cursor() 
    myCursor.execute("SELECT COUNT(1) FROM schema.table;") 
    return HttpResponse("%s." % myCursor.fetchone()) 

在模板我可以顯示這個數。但是,這似乎是不正確的,基於我如何查詢Sqlite數據庫。

我想使用數據模型。當我正在閱讀數據時,這是否適合使用?該帳戶不具有對oracle/mysql表的寫入權限。

有沒有辦法爲現有表自動生成這些模型?其中一些表格在列數上相當大,如果可能的話,我寧願自動創建以防止我的錯誤。

回答

3

對於多個數據庫支持請參閱Django documentation。總而言之,您將每個數據庫的連接信息添加到您的DATABASES設置中,然後設置路由器以確定每個數據庫處理哪些應用程序/模型。

要從現有數據庫表生成模型,您可以使用inspectdb management command。但是,Django並沒有使用這個命令明確列出對Oracle數據庫的支持,所以你可能在那裏。