python-3.x - 通过 Python3.7 连接到 SQL Server 的操作错误
问题描述
我使用的是 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错误数据源名称未找到并且没有指定默认驱动程序悖论
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)
光标 = cnxn.cursor()
如果 Method-1 对您不起作用,那么您的 SQL Server 驱动程序可能需要TLS 1.0,这将在您的计算机上被禁用。更改为最新版本的SNAC将为您解决问题
con_string = pyodbc.connect(driver='{SQL Server Native Client 11.0}', host=server, database=db1, trusted_connection=tcon)
推荐阅读
- jquery - 如何仅选择没有显示的字段:使用 JQuery 的无 CSS 属性?
- vba - 根据用户表单选择更新电子表格上的多行
- node.js - 如何在 node graphicsmagick 中使用自定义命令?
- python - 读取文本文件并提取制表符和空格划分的部分
- ruby - 如何在新的 GitHub 存储库中自动创建问题?
- docker - 如何在适用于 Linux 的 Windows 子系统上的 docker 中使用 -v 卷参数
- node.js - 在每次源文件更改时自动运行 Mocha 测试
- r - 反向摘要以扩展数据框中的逗号分隔字符串
- python - 带有 CleverHans 的随机森林黑盒
- python - 为什么 Python Pandas loc 不返回单个项目?