簡體   English   中英

無法讓sql server與django azure web app一起使用

[英]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上工作。 您應該先了解一些事情,因為它們可以幫助解決您的問題:

Python版本

我在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版

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數據庫,請嘗試下列辦法中的一個或多個:

  • 指定端口1433
  • 在數據庫主機前添加tcp:例如tcp:django-myorg.database.windows.net - 並確保您的SQL服務器實際上名為django-myorg ,這與數據庫名稱是分開的
  • 嘗試將驅動程序更改為SQL Server Native Client 11.0

如果它們在您的計算機上運行,​​很可能您的設置很好,問題在於構建所需的模塊 - 但以防萬一。

並且有心,這花了我幾個月的時間來建立 - 這個過程肯定會變得更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM