2014-04-29 38 views
0

我想知道如何創建和使用從輔助數據庫讀取數據的模型。目前,我使用下面的代碼填充下拉菜單。它位於views.py中。使用模型查詢輔助外部數據庫

views.py

def platform_pass_rate(request): 
    db = MySQLdb.connect(user='a_user', db='secondary', passwd='something', host='ab-cd') 
    cursor = db.cursor() 
    cursor.execute('SELECT study FROM study ORDER BY study ASC') 
    study_model = [row for row in cursor.fetchall()] 
    cursor.execute(
      'SELECT column_name FROM information_schema.columns where table_name = 
      \'finalvalues\' order by ordinal_position') 
    study_result = cursor.fetchall() 
    db.close() 
    study_models = [i for sub in study_model for i in sub] 
    study_results = [i for sub in study_result for i in sub] 

    return render_to_response("data_form_platform.html", {'our_url': current_url, 
                'study_models': study_models, 
                'study_results': study_results}) 

我看了一下數據庫路由器,看着例子。但是,我對模型的瞭解很少,大多數例子都與寫入數據庫有關。任何幫助將不勝感激。

+0

你現在的方法有什麼問題?我看起來很好。 – ebarr

+0

在功能上,它沒有什麼問題,但我知道這不是Django中正式的做法,我想學習如何。 –

+0

如果這個數據庫不屬於你的項目,它是一種完全可以接受的做事方式。除此之外,你不可能在這裏得到比文檔更全面的答案:https://docs.djangoproject.com/en/dev/topics/db/multi-db/ – ebarr

回答

1

您提出的解決方案本身並沒有什麼錯誤。數據庫路由的使用主要用於屬於您的項目的多個數據庫。如果你正在使用外部數據庫(特別是那些你只有很少或沒有控制的數據庫),那麼你顯示的方法很好。

但是,可以包裝外部數據庫,以便可以使用Django ORM進行查詢。文檔涵蓋了這個很好的https://docs.djangoproject.com/en/dev/topics/db/multi-db/