我的OS
是Scientific Linux 7.5
,希望使用python 2.7.5
连接到MS SQL server
我已配置unixODBC 2.3.1
和Microsoft 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)")
2条答案
按热度按时间6tqwzwtp1#
您应该从连接字符串中删除
'Trusted_Connection=yes;'
。当您尝试使用SQL身份验证(提供用户名和密码)进行连接时,它用于Windows身份验证。rqdpfwrv2#
另一个原因和解决方案,以防有人因为这个原因而死:
如果您依赖
env
文件来填充pyodbc连接字符串的Username和Password部分,并且执行过程中出现了一些错误,导致这些值无法访问,那么您将收到No Kerberos credentials available
错误消息。检查连接字符串的值;在我的例子中,当我打印SQLAlchemy引擎字符串时,它缺少用户名和密码,使用正确的
--env-file=
标志运行我的Docker容器解决了这个问题。