我正在try 使用pyodbc从运行Ubuntu 16.04的远程机器连接到MS SQL Server.

import pyodbc 

conn = pyodbc.connect(r'DRIVER=ODBC Driver 17 for SQL Server; SERVER=xxxTest-SRV; PORT=51333; DATABASE=TestDB; UID=xxxx; PWD=xxxx;')

我发现以下错误:

pyodbc.操作错误:('HYT00','[HYT00][unixODBC][Microsoft][ODBC

我try 在连接字符串中使用服务器IP,但仍然没有成功.

但是,我可以使用sqlcmd从终端连接到

sqlcmd -S xxxTest-SRV, 51333 -d TestDB -U xxxx -P xxxx

我没有找到任何问题的答案.

odbcinst.ini

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

从linux机器上使用pyodbc连接到MS SQL Server似乎总是有问题.有没有从Python连接到SQL Server的方法.谢谢你帮我解决这个错误.非常感谢.

[UPDATE]

根据下面的答案,我更新了连接字符串.但是,现在我得到了以下错误:

pyodbc.错误:('01000',"[01000][unixODBC][Driver Manager]无法打开

My odbcinst.ini文件驱动程序定义:

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

从Linux机器连接到MS SQL Server一直是一场噩梦.你能告诉我哪个pyodbcunixODBCDriver版本最稳定吗?

我已经按照this条Microsoft说明安装了驱动程序.我的pyodbc版本是4.0.23

推荐答案

Microsoft的SQL Server ODBC驱动程序不使用PORT=参数.端口号(如果有的话)用逗号附加到服务器名/IP,例如.,

SERVER=xxxTest-SRV,51333;

Python-3.x相关问答推荐

如何绘制交叉验证的AUROC并找到最佳阈值?

如何使用Python将嵌套的XML转换为CSV

根据另一列中的条件填写该列中的值

CDKTF ec2 具有特定私有 IP 地址的娱乐

Python 3 - 给定未知数量的类别动态地将字典嵌套到列表中

如何在 Python 中 cv2 的窗口标题上动态更新 FPS

DynamoDB - boto3 - batch_write_item:提供的关键元素与架构不匹配

Pandas DataFrame:使用 Pandas 将 NaN 值替换为 3 行以上的平均值

预分配一个无列表

ValueError:找不到子字符串,我做错了什么?

Python 3 list(dictionary.keys()) 引发错误.我究竟做错了什么?

ValueError:FixedLocator 位置的数量 (5),通常来自对 set_ticks 的调用,与刻度标签的数量 (12) 不匹配

numpy.ndarray 与 pandas.DataFrame

django - 值更改后自动更新日期

为现有项目创建virtualenv

为什么某些代码在 Python2 中是确定性的,而在 Python 3 中是非确定性的?

在 Python 中生成马尔可夫转移矩阵

通过字典有效地替换Pandas 系列中的值

__iter__ 和 __getitem__ 有什么区别?

Beautifulsoup 的单元测试失败