Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask应用程序在通过数据库连接将代码部署到Azure Web时无法呈现,但在本地服务器上可以正常工作_Python_Azure_Flask_Azure Web App Service_Pymssql - Fatal编程技术网

Python Flask应用程序在通过数据库连接将代码部署到Azure Web时无法呈现,但在本地服务器上可以正常工作

Python Flask应用程序在通过数据库连接将代码部署到Azure Web时无法呈现,但在本地服务器上可以正常工作,python,azure,flask,azure-web-app-service,pymssql,Python,Azure,Flask,Azure Web App Service,Pymssql,我有一个带有烧瓶模板的Azure web应用程序。我希望它连接到SQL数据库。我做了一个。我安装了pymssql。出于测试目的,我添加到根文件夹中的views.py中: import pymssql conn = pymssql.connect(server='mydb.database.windows.net', user='mydbnameadmin@mydb', password='secret', database='mydb') 我首先在我的kubuntu盒子上进行了本地测试。为了确

我有一个带有烧瓶模板的Azure web应用程序。我希望它连接到SQL数据库。我做了一个。我安装了pymssql。出于测试目的,我添加到根文件夹中的views.py中:

import pymssql
conn = pymssql.connect(server='mydb.database.windows.net', user='mydbnameadmin@mydb', password='secret', database='mydb')
我首先在我的kubuntu盒子上进行了本地测试。为了确保获得连接,我输入了错误的密码,服务器抛出了一个错误。我输入正确,错误消失了。酷。azure门户上的SQL仪表板也报告连接成功。因此,我将我的更改(包括更新requirements.txt)推送到我的github repo,并将其吸入我的web应用程序中。当我尝试运行web应用程序时,在索引页上:

无法显示该页,因为出现了内部服务器错误 发生了

打开并检查详细日志后,我得到了:

HTTP Error 500.0 - Internal Server Error
The page cannot be displayed because an internal server error has occurred.
Most likely causes:

IIS received the request; however, an internal error occurred during the processing of the request. The root cause of this error depends on which module handles the request and what was happening in the worker process when this error occurred.
IIS was not able to access the web.config file for the Web site or application. This can occur if the NTFS permissions are set incorrectly.
IIS was not able to process configuration for the Web site or application.
The authenticated user does not have permission to use this DLL.
The request is mapped to a managed handler but the .NET Extensibility Feature is not installed.
IIS。那在这里干什么?我认为微软很时髦,它在一个linux机器上托管了这项服务

我删除第二行

conn=pymssql.connect(server='mydb.database.windows.net',user='1〕mydbnameadmin@mydb“,password='secret',database='mydb')

错误消失了。如果我在本地运行一台仍然使用Azure SQL server的服务器,我不会有任何问题

这似乎与我的问题相同:

但是他们说他们是否真的用SQL数据库工作了

人们怎么想? 谢谢

我的要求.txt

alembic==0.7.7
azure==0.11.1
Flask==0.10.1
Flask-Migrate==1.5.0
Flask-Script==2.0.5
Flask-SQLAlchemy==2.0
futures==3.0.3
itsdangerous==0.24
Jinja2==2.8
Mako==1.0.1
MarkupSafe==0.23
pymssql==2.1.1
python-dateutil==2.4.2
six==1.9.0
SQLAlchemy==1.0.8
Werkzeug==0.10.4
wheel==0.24.0

据我所知,Azure网站默认托管在Windows Server 2012虚拟机上,该虚拟机不会安装
FreeTDS
,而且我们没有安装它的权限。而
pymssql
基于
FreeTDS


因此,我们可以使用
pyodbc
连接Azure SQL,作为轻松处理它的变通方法

我能够使用pymssql 2.1库成功地将Python代码连接到Azure上的SQL数据库

我不知道这是否是导致问题的原因,但我确实在我的连接字符串中包含了几个额外的参数。。。也许这会有帮助。我明确指定了驱动程序和加密参数,因为SQL Azure始终启用SSL(我相信)

如果这不起作用,可以尝试在connect语句周围添加一些错误处理,以获取更具体的错误消息


祝你好运

我遇到了这个问题,但我最终意识到这是因为我在Visual Studio中使用了64位版本的Python,而Azure只支持32位版本

我看到:

DLL load failed: %1 is not a valid Win32 application.

一旦我切换到安装并使用32位版本,我就能够毫无问题地使用Flask和pyodbc。

您说过使用pymssql库,但您有一个pyodbc对象。你指的是哪一个?:)另外,pyodbc的依赖项是什么,将其添加到requirements.txt和pip安装失败
pyodbc
不需要任何依赖项,我只是复制了您的requirements.txt并在其中添加了
pyodbc
,然后运行
env/Scripts/pip.exe install-r requirements.txt
,对我来说效果很好。虽然我在Windows中,但我认为在Linux中也是一样的。更多详情,我们可以在编辑:我的网络应用程序现在正在工作。但是在我的开发环境(linux)中,如果我尝试运行本地服务器,我会得到myConnection=pyodbc.connect('Driver={SQL server};'pyodbc.Error:('IM002','IM002][unixODBC][Driver Manager]未找到数据源名称,并且未指定默认驱动程序(0)(SQLDriverConnect')。我想我需要着手安装一些数据库驱动程序
DLL load failed: %1 is not a valid Win32 application.