[英]can't get sql server to work with django azure web app
我已經嘗試了3天了,無法讓它發揮作用。 我正在從microsoft docs學習本教程: https : //docs.microsoft.com/en-us/azure/app-service-web/web-sites-python-create-deploy-django-app
編輯:我使用的是Windows命令行選項,而不是Visual Studio。 我正在開始使用教程中建議的天藍色市場中的PTVS python / django模板。
該應用程序適用於sql lite,但當我將其更改為SQL服務器時,它停止使用以下錯誤:
django.core.exceptions.ImproperlyConfigured: 'sql_server.pyodbc' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
'mysql', 'oracle', 'postgresql', 'sqlite3'
Error was: No module named 'sql_server'
2017-04-27 04:34:34.525084: wfastcgi.py 2.1.1 closed
該應用程序通過連接到相同的遠程sql azure db在本地工作,所以問題肯定是天藍色的。 我在本地得到了同樣的錯誤,直到我安裝了pyodbc-azure( https://github.com/michiya/django-pyodbc-azure )。 根據Microsoft文檔和庫文檔的建議,以下是settings.py中的數據庫連接規范:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'django-myorg',
'USER': 'riz',
'PASSWORD': '#######',
'HOST': 'django-myorg.database.windows.net',
'PORT': '',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
},
},
}
這是我的第三次嘗試,我對微軟缺乏最新的文檔感到沮喪。
我已經嘗試按照本指南進行故障排除: https : //docs.microsoft.com/en-us/azure/app-service-web/web-sites-python-configure 。 我已經嘗試為所有必需的庫構建輪子,但仍然有同樣的問題。 我有一種感覺,它是Azure無法通過使用pip獲得的pyodbc庫之一。
更新:我刪除了默認包含在azure為django提供的PTVS模板中的.skipPythonDepolyment。 這促使azure實際嘗試並安裝requirements.txt中列出的庫。 根據pip.log,這是最新的錯誤:
running build
running build_ext
building 'pyodbc' extension
error: Unable to find vcvarsall.bat
這似乎是試圖建立pyodbc但失敗了。 不知道在這一點上我能做些什么。
我有類似的設置,並花了很多個月了解如何讓Django在Azure上工作。 您應該先了解一些事情,因為它們可以幫助解決您的問題:
我在web.config文件中遇到了很多問題,因為看起來Django應用程序沒有使用“runtime.txt”中指定的Python版本加載,就像他們說的那樣。 它們默認使用2.7。 要使用Python 3.4運行Django,您需要手動將web.config文件替換為您想要的版本,並確保它指定正確版本的Django。 我相信默認的Django應用程序附帶了三個web.config文件,一個用於2.7,一個用於3.4,一個標題為web.config
。 嘗試將3.4一個復制到web.config
,這是Azure實際使用的唯一文件。
您需要安裝許多來自車輪的庫,其中大部分都可以在http://www.lfd.uci.edu/~gohlke/pythonlibs/找到。 請注意,您需要在Azure上使用Python 3.4,32位版本(除非您已更改默認的python和環境),此外,您需要將中間標記替換為none
否則它將在Azure上中斷:
numpy‑1.13.1+mkl‑cp34‑cp34m‑win32.whl
更改為numpy‑1.13.1+mkl‑cp34‑none‑win32.whl
為了簡化從輪子的安裝,我在Azure上的app應用程序根文件夾中添加了一個wheelhouse
文件夾,並將我的輪子移到那里。 然后在requirements.txt
我指向我要安裝的那個駕駛室中的確切輪盤文件。
django-pyodbc-azure
是必需的,根據我的經驗,最新版本適用於Django 1.11。 但是,如果我沒記錯的話,市場上的默認Django應用程序只是在其requirements.txt
文件中說django
,所以如果在成功安裝django-pyodbc-azure
后遇到連接問題,請嘗試指定Django的版本。 我使用以下它,它的工作原理:
django>=1.11.1,<1.12
pyodbc from wheel
D:\home\site\wwwroot\wheelhouse\pyodbc-4.0.16-cp34-none-win32.whl
django-pyodbc-azure==1.11.0
檢查你的pip構建輸出,以確保它重新安裝正確版本的Django,如果你還沒有1.11。 我建議你在你的需求文件中指定django在你准備好之前不應該更新到1.12,否則它可能會在下一個版本發布時更新,這會破壞與django-pyodbc-azure
的連接。
我的數據庫連接有點不同。 如果您使用的是Azure SQL數據庫,請嘗試下列辦法中的一個或多個:
tcp:
例如tcp:django-myorg.database.windows.net
- 並確保您的SQL服務器實際上名為django-myorg
,這與數據庫名稱是分開的 SQL Server Native Client 11.0
如果它們在您的計算機上運行,很可能您的設置很好,問題在於構建所需的模塊 - 但以防萬一。
並且有心,這花了我幾個月的時間來建立 - 這個過程肯定會變得更容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.