2017-06-21 131 views
0

我需要從外部MySQL數據庫將數據提取到我的應用程序。我在settings.py文件中將以下幾行添加到了我的數據庫字典中。將外部mysql數據庫連接到django應用程序並進行查詢

'cust': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'cust_data', 
     'HOST': '', 
     'USER': '', 
     'PASSWORD': '' 
    } 

發動機名稱正確嗎?我已經添加了所有其他細節。

現在是這樣嗎?我現在如何從這個數據庫獲取數據?我可以簡單地在我的應用程序views.py中使用SQL查詢嗎?

現在,當使用以下命令

python manage.py shell 

當我執行一個查詢到MySQL數據庫我進入外殼,這是行不通的。我相信我在這裏失去了一些東西。

我被困在這裏,我在這裏做錯了什麼?我如何運行一個命令來訪問上面數據庫中某個表的數據?

回答

0

看起來你的外部MySQL數據庫沒有映射到你的Django模型。在這種情況下,您必須使用django.db.connection對象來連接數據庫並直接執行原始SQL查詢。您可以在views.py中使用查詢結果,但最好考慮是否view.py是執行查詢操作的正確位置。

爲了測試在Python Shell的查詢,你可以這樣試試:)

>>> from django.db import connections 
>>> cursor = connections['cust'].cursor() # Replace 'cust' to other defined databases if necessary. 
>>> cursor.execute("YOUR SQL QUERY HERE") 
>>> cursor.fetchall() 

對於該方法使用fetchall(它應該返回你的結果元組的形式。

您可以從官方網站here查詢更多信息。

+0

這看起來很完美,所以一旦配置我的settings.py後,我可以直接使用上面的行如李所提到的代碼?或者我需要配置其他的東西? – kohl

+0

是的。你可以在shell中使用上面提到的代碼(通過命令'python manage.py shell'使用shell)來查看它是否可以從你的數據庫中得到結果。如果它返回了預期的結果,你可以簡單地在py文件中使用相同的代碼。 –

+0

好的,謝謝 – kohl

0

常量變量是錯誤的。你必須聲明DATABASES變量。

在你的settings.py

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'mydatabase', 
     'USER': 'myuser', 
     'PASSWORD': 'mypassword', 
     'HOST': 'myhost'    
    } 
} 

只是用正確的值替換佔位符。

+0

我覺得你在這裏弄錯了,我爲我的應用程序使用了多個數據庫,我已經有一個默認數據庫集,這是我的第二個數據庫。請參閱此鏈接獲取詳細的文檔https://docs.djangoproject.com/en/1.11/topics/db/multi-db/ – kohl

相關問題