Python 3.x 通过Python3.7连接到SQL Server时出现操作错误

Python 3.x 通过Python3.7连接到SQL Server时出现操作错误,python-3.x,odbc,pyodbc,Python 3.x,Odbc,Pyodbc,我使用的是Python 3.7,几年来我一直使用Python脚本连接到SQL server,代码如下: con_string = 'DRIVER={SQL Server};SERVER='+ server +';DATABASE=' + database cnxn = pyodbc.connect(con_string) cursor = cnxn.cursor() 最近在运行脚本时,我遇到以下错误: OperationalError: ('08001', '[08001] [Microsof

我使用的是Python 3.7,几年来我一直使用Python脚本连接到SQL server,代码如下:

con_string = 'DRIVER={SQL Server};SERVER='+ server +';DATABASE=' + database
cnxn = pyodbc.connect(con_string)
cursor = cnxn.cursor()
最近在运行脚本时,我遇到以下错误:

OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]SSL Security error (18) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]ConnectionOpen (SECCreateCredentials()). (1)')
我不太清楚如何解释这一点,并尝试寻找解决方案,但很难理解其中的大部分内容

谢谢

2020年8月18日更新

在Gords帮助下,我更新了我的驱动程序,并根据以下答案构建了一个新的连接字符串:

但我仍然得到了错误

OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]SSL Security error (18) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]ConnectionOpen (SECCreateCredentials()). (1)')

谢谢方法1-请查看以下内容:

con\u string=pyodbc.connect(驱动程序='{SQL Server}',主机=Server,数据库=db1,可信连接=tcon)
cursor=cnxn.cursor()

如果方法1不适用于您,那么您的SQL Server驱动程序可能需要TLS
1.0,这将在您的计算机上被禁用。更改为最新版本的SNAC将为您解决此问题


con_string=pyodbc.connect(驱动程序='{SQL Server Native Client 11.0}',主机=Server,数据库=db1,可信连接=tcon)

SQL Server驱动程序非常旧。尝试使用更现代的驱动程序,如“用于SQL Server的ODBC驱动程序17”。感谢Gord,我将“SQL Server”替换为“ODBC驱动程序17”,并收到一条新的错误消息InterfaceError:('IM002','[IM002][Microsoft][ODBC驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序(0)(SQLDriverConnection)'))您需要先安装驱动程序,然后才能使用它。检查
pyodbc.drivers()
返回的列表,查看Python应用程序当前可用的驱动程序。再次感谢Gord。我已经更新了驱动程序,但它仍然不工作。因此,我找到了下面的链接,并使用该方法重建了我的连接字符串:但是,当构建时,在测试中工作的新连接字符串在原始问题的编辑中再次给了我操作错误。感谢您的回答Ansh,什么是tcon?我找不到它的定义位置。受信任的连接意味着Windows身份验证。SQL Server有两种身份验证模式:混合身份验证模式和Windows身份验证模式。您可以省略此模式,也可以选择此模式。如果此模式适用于您,请对答案进行投票。谢谢
OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]SSL Security error (18) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]ConnectionOpen (SECCreateCredentials()). (1)')