无法在Scintific Linux 7.5上使用pyodbc连接到MS SQL Server

wko9yo5t  于 2023-01-04  发布在  Linux
关注(0)|答案(2)|浏览(159)

我的OSScientific Linux 7.5,希望使用python 2.7.5连接到MS SQL server我已配置unixODBC 2.3.1Microsoft ODBC Driver 13 for SQL Server
但是当我使用下面的代码时:

import pyodbc
cnxn = pyodbc.connect(
'Driver={/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.1.so.9.2};'
'Server=localhost;'
'User=sa;'
'Password=xxx;'
'Database=yyy;'
'Trusted_Connection=yes;')

我得到以下错误

pyodbc.Error: ('HY000', u'[HY000] [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]SSPI Provider: No Kerberos credentials available (default cache: KEYRING:persistent:1000) (851968) (SQLDriverConnect)')

使用'Driver={ODBC Driver 13 for SQL Server};'时得到相同的错误
如果我使用"Driver={SQL Server};'",我会遇到以下错误

pyodbc.Error: ('01000', u"[01000] [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found (0) (SQLDriverConnect)")
6tqwzwtp

6tqwzwtp1#

您应该从连接字符串中删除'Trusted_Connection=yes;'。当您尝试使用SQL身份验证(提供用户名和密码)进行连接时,它用于Windows身份验证。

rqdpfwrv

rqdpfwrv2#

另一个原因和解决方案,以防有人因为这个原因而死:
如果您依赖env文件来填充pyodbc连接字符串的Username和Password部分,并且执行过程中出现了一些错误,导致这些值无法访问,那么您将收到No Kerberos credentials available错误消息。
检查连接字符串的值;在我的例子中,当我打印SQLAlchemy引擎字符串时,它缺少用户名和密码,使用正确的--env-file=标志运行我的Docker容器解决了这个问题。

相关问题