【发布时间】:2020-11-05 21:46:13
【问题描述】:
我正在尝试获取一个 python 脚本以部署到 Cloud Foundry,它使用 pyobdc 连接到 sql server 并执行命令。我的 pyobdc 连接语句如下所示:
warehouse_connection = pyodbc.connect(f'Driver={DRIVER}'
f';Server={SERVER}'
f';Database={DATABASE}'
f';UID={USERNAME}'
f';PWD={PASSWORD}'
';Trusted_Connection=no')
warehouse_cursor = warehouse_connection.cursor()
我使用的驱动程序是用于 SQL Server 的 ODBC Driver 17,并且我的 odbcinst.ini 文件如下所示:
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/home/vcap/deps/0/apt/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.6.so.1.1
UsageCount=1
我的脚本在我的本地机器上运行良好,因此我知道访问帐户信息是最新的,并且我还有其他使用该驱动程序的脚本运行良好,但是当我尝试部署到 Cloud Foundry 时,我收到以下错误:
pyodbc.OperationalError: ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout
expired (0) (SQLDriverConnect)')
我尝试更改受信任的连接变量,确保我的 apt/环境是最新的,但我不确定我缺少什么。 Cloud Foundry 中的 pyodbc 有问题还是我有什么问题?
谢谢。
【问题讨论】:
-
您是否具有从在 CF 上运行的应用程序到 SQL Server 的基本网络连接?我的建议是稳定应用程序,所以推一些东西让它运行。然后
cf ssh进入您的应用容器,看看您是否至少可以nc -v <server> <port>并与您的服务器建立 TCP 连接。 -
另外,stackoverflow.com/a/58105873/1585136 主要用于 PHP + MSSQL + ODBC,但您可以按照有关使用 apt-buildpack 和安装
mssql-tools的部分进行操作。然后,您可以在cf ssh进入应用程序后从 cli 使用sqlcmd。这是另一种验证是否可以从容器内部连接的方法,它将问题与 ODBC 设置和连接与代码中的某些内容区分开来。
标签: python pyodbc cloud-foundry