尝试使用pyobdc连接Azure应用程序服务上Flask Python应用程序中的SQL Server时出错



我正在使用Python和Flask开发一个web应用程序。

我的应用程序使用pyobdc访问Microsoft SQL Server。它在本地运行。

当我将它部署到Azure应用程序服务并使用该应用程序时,当它需要访问服务器时,它会崩溃,给我这个错误:

pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")

随机细节:

  • Azure Python版本:3.8.12

  • Linux详细信息:Debian GNU/Linux 9(拉伸(

我尝试使用Azure应用程序服务中的kudu bash终端,使用此ODBC驱动程序linux链接中的说明手动安装它。但当我尝试时,它告诉我sudo不是命令。(这是关于Azure限制还是IT权限的问题?(

我还尝试升级到适用于SQL Server的ODBC驱动程序18,但没有成功。

我在一些地方读到,Microsoft Azure应用程序服务不支持ODBC,也不支持安装ODBC。

这是真的吗?有办法解决这个问题吗?

有没有其他方法可以将MS SQL Server连接到azure上部署的python flask web应用程序?

我还检查了/etc中的odbc.ini和odbcinst.ini文件,发现它们是空的。

好的,我解决了我的问题。

我通过dockerfile安装了用于SQL Server的ODBC驱动程序17。我使用了关于如何使用ODBC 17 Debian版本安装的说明。但由于一些错误,它没有完全工作,所以我稍微修改了一下。

这是我添加到我的docker中的内容:

#What I added to deal with the errors I was getting:
RUN apt-get update -y
RUN apt install unixodbc -y
#Installation instructions from microsoft link:
RUN su
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN exit
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17
RUN ACCEPT_EULA=Y apt-get install -y mssql-tools
#Checking the installation
RUN cat /etc/odbcinst.ini

#Create the odbc.ini file
RUN echo -e '[voip]nDescription = whatevernDriver      = ODBC Driver 17 for SQL ServernServer      = whatevernUser        = whatevernPassword    = whatevernPort        = whatevernDatabase    = whatever' > odbc.ini
#Moving odbc.ini to the etc directory
RUN mv odbc.ini etc
#Checking contents of odbc.ini
RUN cat /etc/odbc.ini 

我不得不自己编辑odbc.ini,因为它是空的。但是odbcinst.ini应该在运行微软指令提供的命令之后填充。

etc/odbcinst.ini应该有这样的内容:

[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.10.so.1.1
UsageCount=1

etc/odbc.ini应该是这样的:

[voip]
Description = whatever
Driver      = ODBC Driver 17 for SQL Server
Server      = whatever
User        = whatever
Password    = whatever
Port        = whatever
Database    = whatever

如果您有这个问题,您必须自己编辑odbc.ini。但我所做的是创建一个odbc.ini文件。然后把它移到等等。

相关内容

  • 没有找到相关文章

最新更新