我使用的是Python 3.7,几年来我有一个连接到SQL服务器的Python脚本,代码如下:
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的帮助下,我更新了我的驱动程序,并根据以下答案构建了一个新的连接字符串:
Pyodbc错误找不到数据源名称,也没有指定默认驱动程序的悖论
con_string = 'DRIVER={ODBC Driver 17 for SQL Server};TrustServerCertificate=No;Network=DBMSSOCN;DATABASE='+database+';WSID=L13-CHRISTOPHER;APP={Microsoft® Windows® Operating System};Trusted_Connection=Yes;SERVER='+server+';'
但我仍然得到错误
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_string = pyodbc.connect(driver='{SQL Server}', host=server, database=db1, trusted_connection=tcon)
cursor=cnxn.cursor((
如果方法1不适用于您,那么您的SQL Server驱动程序可能需要TLS1.0,而这将在您的计算机上禁用。更改为SNAC的最新版本将为您解决问题
con_string = pyodbc.connect(driver='{SQL Server Native Client 11.0}', host=server, database=db1, trusted_connection=tcon)