我已经尝试了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 server时,它将停止使用以下错误:
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但失败了。不知道在这一点上我能做些什么。
答案 0 :(得分:2)
我有类似的设置,并花了很多个月了解如何让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
,否则它将会中断天青:
numpy‑1.13.1+mkl‑cp34‑cp34m‑win32.whl
更改为numpy‑1.13.1+mkl‑cp34‑none‑win32.whl
为了简化从轮子的安装,我在Azure上的应用程序根文件夹中添加了一个wheelhouse
文件夹,并将我的轮子移到那里。然后在requirements.txt
中,我指向我要安装的那个驾驶室中的确切车轮文件。
django-pyodbc-azure
是必需的,根据我的经验,最新版本适用于Django 1.11。但是,如果我没记错的话,市场上的默认Django应用只会在django
文件中显示requirements.txt
,因此如果在成功安装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
如果它们在您的计算机上运行,很可能您的设置很好,问题在于构建所需的模块 - 但以防万一。
并且有心,这花了我几个月的时间来建立 - 这个过程肯定会变得更容易。