在 Heroku 上安装 ODBC 驱动程序

cos*_*smo 5 python heroku pyodbc

我正在尝试pyodbc连接到 Azure 上托管的 MSSQL 数据库,虽然它在本地工作,但当我将更改推送到 Heroku 时,我无法让它工作。我正在运行 Windows。这是它给我的错误:

pyodbc.Error: ('01000', "[01000] [unixODBC][驱动程序管理器]无法打开 lib 'ODBC Driver 13 for SQL Server': 文件未找到 (0) (SQLDriverConnect)")

这就是我开始连接的方式:

cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};
       SERVER=serverurl;
       DATABASE=db;
       UID=user;
       PWD=password')
Run Code Online (Sandbox Code Playgroud)

这是我的 Aptfile,其中包含 Heroku 驱动程序的下载链接:

unixodbc
unixodbc-dev
python-pyodbc
libsqliteodbc
https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/msodbcsql/msodbcsql_13.1.9.2-1_amd64.deb
Run Code Online (Sandbox Code Playgroud)

和我的requirements.txt

...
pyodbc==4.0.24
Run Code Online (Sandbox Code Playgroud)

我什至安装了一个构建包(https://github.com/heroku/heroku-buildpack-apt)。据我了解,Heroku 端不存在驱动程序,因此它无法找到它。

如果确实如此,我怎样才能让 Heroku 下载驱动程序?我尝试将下载链接放入 Aptfile 中,如上所示,但似乎不起作用。

小智 0

我相信这可以使用与类似问题Python cant find ODBC Driver on Heroku after set everything相同的方法来解决。

tldr:解决方案是在 Ubuntu 18.04 环境上预编译 SQL Server 的 ODBC 驱动程序 17,并通过此构建包将所需的驱动程序文件复制到 Heroku https://github.com/matt-bertoncello/python-pyodbc-buildpack.git。通过在 Ubuntu 16.04 环境上预编译 ODBC 驱动程序 13,可以实现相同的过程。