设置所有内容后,Python无法在Heroku上找到ODBC驱动程序

yvt65v4c  于 2022-11-13  发布在  Python
关注(0)|答案(2)|浏览(99)

我已经在互联网上经历了每一个可能的解决方案,但我无法使pyobdc获得heroku的驱动程序。
我创建应用程序的步骤如下:

heroku create
heroku config:set FLASK_CONFIG=heroku 

heroku buildpacks:add heroku/python
heroku buildpacks:add --index 1 heroku-community/apt

git push heroku master

我甚至尝试使用odbc buildpack,但仍然没有运气:

heroku buildpacks:add https://github.com/iFix/heroku-buildpack-odbc.git

通过微软网站后,我修剪了我的Aptfile到instuct heroku安装以下软件包:

# install msodbcsql17
https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/msodbcsql17/msodbcsql17_17.4.2.1-1_amd64.deb
# install mssql-tools
https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/mssql-tools/mssql-tools_17.4.1.1-1_amd64.deb
# install unixodbc-dev
unixodbc-dev

这使得pyodbc安装没有错误。但是当我运行pyodbc.drivers()时,它什么也没有返回。Ubuntu 16.04上的相同命令返回“ODBC Driver 17 for SQL Server”。
该项目的源代码位于:https://github.com/IamVNIE/odbcTestHeroku
托管的应用程序位于:https://pyodbctest.herokuapp.com/
有没有人能提供一些指导,使这一工作。

n9vozmp4

n9vozmp41#

我已经解决了这个问题,在运行Ubuntu 18.04的机器上预编译ODBC Driver 17 for SQL Server,并通过Heroku构建包将libmsodbcsql-17.5.so.2.1msodbcsqlr17.rll文件复制到适当的目录中。这是ODBC Driver 17.5 for SQL Server,我可能不会编译此驱动程序的其他版本,但我想概念仍然是相同的。
Heroku构建包及其要求可在此处找到https://github.com/matt-bertoncello/python-pyodbc-buildpack.git

dw1jzc5e

dw1jzc5e2#

之前的答案对我很有效,直到我不得不切换到heroku堆栈22。之后,我开始得到以下错误:
pyodbc.OperationalError:“[08001] [unixODBC][Microsoft][用于SQL Server的ODBC驱动程序17]客户端无法建立连接(0)(SQLDriverConnect)”
为了解决这个问题,我切换到另一个库python pymssql,它处理Azure中的Microsoft SQL服务器的连接。

conn = pymssql.connect(server=xxx,\
        user=yyy, \
        password=zzz, \
        database=xxx)
cursor = conn.cursor(as_dict=True)
cursor.execute(query)
rows = cursor.fetchall()
cursor.close()
conn.close()

相关问题