在Heroku

时间:2018-10-26 07:34:37

标签: python heroku pyodbc

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

  

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

这是我开始连接的方式:

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

这是我的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

还有我的requirements.txt

...
pyodbc==4.0.24

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

如果确实是这样,我如何让Heroku下载驱动程序?我已经尝试过将下载链接放置在Aptfile中,如上所示,但是它似乎不起作用。

1 个答案:

答案 0 :(得分:0)

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

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