【发布时间】:2020-08-13 07:01:21
【问题描述】:
我使用的是 Python 3.7,几年来我有一个 Python 脚本,它使用以下代码连接到 SQL 服务器:
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 error Data source name not found and no default driver specified paradox
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)')
谢谢
【问题讨论】:
-
“SQL Server”驱动程序很旧。尝试使用更现代的驱动程序,例如“ODBC Driver 17 for SQL Server”。
-
感谢 Gord,我将“SQL Server”替换为“ODBC Driver 17”并收到新的错误消息 InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source未找到名称且未指定默认驱动程序 (0) (SQLDriverConnect)')
-
需要安装驱动才能使用。查看
pyodbc.drivers()返回的列表,了解您的 Python 应用当前可用的驱动程序。 -
再次感谢戈德。我更新了驱动,还是不行。所以我找到了下面的链接并使用该方法重建了我的连接字符串:stackoverflow.com/questions/32662123/… 但是在构建时用于测试的新连接字符串再次给了我操作错误
-
原始问题编辑中的新连接字符串。
标签: python-3.x odbc pyodbc